centos7安装docker
服务器通常需要使用docker来管理自己部署的应用,好的docker配置通常可以省不少资源。
检查环境
Docker 要求 CentOS 系统的内核版本高于 3.10,因此先要检查系统环境是否符合要求,这里使用uname -r检查系统版本内核
# uname -r
更新yum源
# yum update
检查是否安装过旧版本的docker,如果安装过,在安装新版本的时候可能会报错
Transaction check error: file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
如有上述报错,此时需要卸载旧版本的包
# sudo yum remove docker docker-common docker-selinux docker-engine # sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
正式安装
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
# yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
# yum list docker-ce --showduplicates | sort -r
安装docker
# yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0 # yum install <FQPN> # 例如:yum install docker-ce-17.12.0.ce
安装后配置
验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
# docker version # docker run hello-world
启动并加入开机启动
# systemctl start docker # systemctl enable docker
使用阿里云加速Docker
Docker官方镜像网站部署在外网,因此我们国内下载比较慢。看了一下国内最好的Docker加速服务就是阿里云了。阿里云的其他镜像比如Maven镜像之类的也都不错。
首先需要注册一个阿里云的帐号,可能还需要其他一点信息。然后进入容器Hub服务控制台,中间有一个加速器。我们点击它之后,阿里云会为我们创建一个专属加速器地址。
然后需要检查Docker客户端的版本,如果小于1.10,只能按照自己系统版本寻找相应的办法了。如果大于等于1.10,就可以直接使用下面的配置方法。配置方法很简单,在/etc/docker/daemon.json中添加一段配置。如果没有该文件则创建。{ "registry-mirrors": ["<your accelerate address>"] }
然后重启Docker服务
# systemctl daemon-reload # systemctl restart docker