# 移除旧的版本:
yum remove docker docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 安装一些必要的系统工具:
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息 (可选)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新 yum 缓存(可选)
yum makecache fast
# 安装 Docker-ce
yum -y install docker
# CentOS7的Docker默认存储路径修改
vi /usr/lib/systemd/system/docker.service
# 找到以下内容
ExecStart=/usr/bin/dockerd-current \
# -g 或 --graph 或 --data-root,插入或修改后保存
-g /datadisk/docker/data
# 修改后需要重载设置
systemctl daemon-reload
# 启动Docker后台服务及开机启动
systemctl enable docker && systemctl start docker
# 测试运行 hello-world
docker run hello-world
# 镜像加速,修改/etc/docker/daemon.json内容:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
# 删除 Docker CE
yum remove docker-ce
rm -rf /var/lib/docker
Docker指定容器的IP范围和DNS
# 注意:default-address-pools 指定的是默认网络地址段范围,如果设为C级地址"5.5.5.0/24"则执行"docker network create mynet1"会出错,原因是不能再分派C级地址。如果设为B级地址"5.5.5.0/16",则默认网络的第一个分配的IP地址为5.5.0.1,执行"docker network create mynet1 && docker netwrk inspect mynet1",会看到mynet1网络范围为5.5.1.0/24,通过“--net mynet1”分派的第一个IP地址为5.5.1.1
echo -e '{
"authorization-plugins": [],
"dns":["172.16.250.15","168.63.129.16","8.8.8.8"],
"default-address-pools":[{"base":"5.5.0.0/16","size":24}]
}
' > /etc/docker/daemon.json
systemctl restart docker
# 创建自定义网络。注意:容器使用自定义网络,会导致/etc/resolv.conf变为原始值,无法使用宿主机的/etc/docker/daemon.json所设置的dns,需要手动修改,因此建议尽管不要用自定义网络。
docker network create --subnet=5.5.5.0/24 mynetwork1 --gateway=5.5.5.1
https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
解决容器无法访问宿主机端口的问题
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=5.5.0.0/16 accept' && firewall-cmd --reload
网友评论