Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
旧版本的 Docker 称为 docker 或者 docker-engine,从1.13.x版本开始,版本分为企业版EE和社区版CE,
版本号也改为按照时间线来发布,比如17.03就是2017年3月,有点类似于ubuntu的版本发布方式。使用以下命令卸载旧版本:
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
把软件仓库地址替换为 TUNA:
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
更新 yum 软件源缓存,并安装 docker-ce。
$ sudo yum makecache fast
$ sudo yum install docker-ce
$ sudo systemctl enable docker
$ sudo systemctl start docker
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,建议安装 Docker 之后配置 国内镜像加速。
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件),
{
"registry-mirrors": ["https://u9nigs6v.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
注意,如果不是https连接,将registry-mirrors换成insecure-registries。
一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
需要注意的一点是docker还有另一种配置方式/etc/sysconfig/docker,如下。两个文件尽量不要同时使用,以免造成冲突。docker将不能启动。
cat /etc/sysconfig/docker
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--disable-legacy-registry --log-opt max-size=2m --log-opt max-file=5 --log-level=warn'
DEFAULT_ULIMIT='--default-ulimit nofile=131072 --default-ulimit memlock=131941395333120 --default-ulimit core=-1 --default-ulimit nproc=-1 --default-ulimit stack=-1'
INSECURE_REGISTRY='--insecure-registry https://registry.access.redhat.com'
docker官方建议使用/etc/docker/daemon.json,原因如下:
JSON格式的配置文件,简单、清晰和集中;不像Command Options配置分散在多个文件和变量中
docker.service更加简单,不用EnvironmentFile导入环境变量,ExecStart后面也不用跟各种参数
支持通过systemd动态daemon-reload加载配置,不用重启Docker(Docker v1.12.0开始引入)
https://forums.docker.com/t/daemon-json-vs-etc-sysconfig-docker/30205/3
https://supereagle.github.io/2017/02/21/docker-config/
$ docker run hello-world
docker info
#!/bin/bash
# 脚本要是发生错误,就终止执行。
set -e
echo "# 卸载旧版本"
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine -y
echo "# 安装依赖包"
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
echo "# 添加国内yum 源"
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
echo "# 更新 yum 软件源缓存,并安装 docker-ce"
sudo yum makecache fast
sudo yum install docker-ce -y
mkdir -p /etc/docker
echo "#配置镜像加速"
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://u9nigs6v.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
EOF
echo "#启动 Docker CE"
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
echo "#测试 Docker 是否安装正确"
docker info