跳到主要内容

CentOS 安装 Docker

· 阅读需 5 分钟

随着目前容器技术的流行,学习如何安装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 infodocker 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-cedocker-ce-cli 的版本字符串要保持一致,混着装可能出现客户端与守护进程不兼容的提示。
  • 安装前如果机器上有旧版本的 docker(比如包名为 dockerdocker-engine 的老包),建议先卸载干净再装 docker-ce,避免冲突。

小结

整个安装流程可以概括为:装工具包、换国内源、查版本、装指定版本、启动服务五步。装完之后别急着用,先把镜像存储路径、镜像加速和开机自启这三项配置好,都是一次配置长期受益的事情。之后新机器初始化时,照着这份笔记从上往下执行一遍即可。

评论 / COMMENTS