CentOS 安装 Docker
随着目前容器技术的流行,学习如何安装docker也是至关重要的。
Docker 官方文档的安装步骤本身不复杂,但在国内网络环境下直接照搬往往会卡在下载速度上;另外生产环境通常需要固定 Docker 版本、调整镜像存储位置,这些细节官方文档讲得比较分散。这篇文章把我在 CentOS 上安装 Docker 的完整流程整理下来,包括安装后的几个常用配置,方便以后重装时直接照着敲。
安装步骤
1)安装对应 yum 工具包
# yum-utils 提供 yum-config-manager 工具,用于后面添加软件源
# device-mapper-persistent-data 和 lvm2 是 devicemapper 存储驱动的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
这一步装的都是基础工具:yum-config-manager 是下一步添加仓库要用的命令,另外两个包是存储驱动相关的依赖,一并装上省得后面报错。
2)设置国内源地址,加快docker下载速度
# 添加阿里云的 docker-ce 仓库,替代官方源
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Docker 官方源在国内下载很慢甚至超时,换成阿里云的镜像仓库后,安装包的下载速度会正常很多。这条命令实际上是把一个 repo 文件写入 /etc/yum.repos.d/ 目录,之后 yum 就能从这个仓库里检索 docker 相关的包。
3)列出对应版本包
# 列出仓库中所有可用的 docker-ce 版本,按版本号倒序排列
yum list docker-ce --showduplicates | sort -r
--showduplicates 参数会把仓库里所有历史版本都列出来,而不是只显示最新版。输出的第二列就是版本字符串,下一步安装指定版本时会用到。
4)安装对应版本docker
# <VERSION_STRING> 替换为上一步查到的版本字符串
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
例子:修改对应 docker 版本。
# 指定安装 20.10.9 版本,docker-ce 与 docker-ce-cli 版本保持一致
sudo yum install docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7 containerd.io
这里一次装了三个包,分工不同:docker-ce 是守护进程(dockerd),docker-ce-cli 是命令行客户端,containerd.io 是底层的容器运行时,真正负责容器的创建和生命周期管理。如果不指定版本直接 yum install docker-ce,装的就是仓库里的最新版;生产环境建议固定版本,避免不同机器上版本不一致带来的差异。
5)启动docker服务
sudo systemctl start docker
启动后可以执行 docker info 或 docker version 确认守护进程正常运行,到这里安装就完成了。
扩展知识点
1)修改 docker 默认镜像存储地址、修改 docker 镜像下载地址
Docker 默认把镜像、容器数据都存放在 /var/lib/docker 目录下。很多服务器的根分区空间有限,镜像拉多了很容易把根分区撑满,所以一般会把存储目录挪到空间更大的数据盘上。同时,从 Docker Hub 拉取镜像在国内也偏慢,配置一个国内的镜像加速地址可以明显改善。这两项都通过 daemon.json 配置。
1、使用vim编辑 /etc/docker/daemon.json 文件
# 该文件默认不存在,vim 打开后保存即会创建
vim /etc/docker/daemon.json
2、输入 data-root 对应值,修改镜像存储地址,输入 registry-mirrors 对应值修改对应镜像下载地址,数组,可多个地址,用,号隔开。
{
"data-root": "/home/docker-data",
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
这里的加速地址用的是中科大镜像站。registry-mirrors 是数组,可以配置多个地址,Docker 拉取镜像时会依次尝试。
daemon.json 文件编辑完成后执行 docker 重启命令
service docker restart
再执行 docker info 命令查看修改配置是否生效。生效后 docker info 输出里的 Docker Root Dir 会显示新的存储路径,Registry Mirrors 一栏会列出配置的加速地址。
2)添加 docker 服务为开机自启
# 注册为系统服务,服务器重启后 docker 自动启动
systemctl enable docker
服务器难免会有重启的时候,如果忘了这一步,重启后容器全都起不来,还得手动去启动 docker 服务,所以装完顺手就把自启配置上。
踩坑与注意
- daemon.json 是严格的 JSON 格式,多一个逗号、少一个引号都会导致 docker 启动失败。改完配置如果重启报错,先检查这个文件的语法。
- 修改
data-root只是换了新目录,原来/var/lib/docker下已有的镜像和容器数据不会自动迁移,需要的话要自己拷贝过去再重启。 - 指定版本安装时,
docker-ce和docker-ce-cli的版本字符串要保持一致,混着装可能出现客户端与守护进程不兼容的提示。 - 安装前如果机器上有旧版本的 docker(比如包名为
docker或docker-engine的老包),建议先卸载干净再装 docker-ce,避免冲突。
小结
整个安装流程可以概括为:装工具包、换国内源、查版本、装指定版本、启动服务五步。装完之后别急着用,先把镜像存储路径、镜像加速和开机自启这三项配置好,都是一次配置长期受益的事情。之后新机器初始化时,照着这份笔记从上往下执行一遍即可。
评论 / COMMENTS