文章目录
- 在 CentOS 上安装 Docker Engine
- 先决条件
- 操作系统要求
- 卸载旧版本
- 安装方法
- 使用 rpm 存储库安装
- 设置存储库
- 安装 Docker Engine
- 安装最新版本
- 安装指定版本
- 以非 root 用户身份管理 Docker
- 配置 Docker 以使用 systemd 启动
参考官方文档: https://docs.docker.com/engine/install/centos/
在 CentOS 上安装 Docker Engine
要在 CentOS 上开始使用 Docker 引擎,请确保满足先决条件,然后按照安装步骤进行操作。
先决条件
操作系统要求
要安装 Docker 引擎,您需要以下 CentOS 版本之一的维护版本:
cat /etc/redhat-release
- CentOS 7
- CentOS 8 (stream)
- CentOS 9 (stream)
必须启用 centos-extras
存储库。该存储库默认处于启用状态,但如果您已禁用它,则需要重新启用它(默认已启用)。
卸载旧版本
旧版本的 Docker 的名称为 docker
或 docker-engine
。在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项。
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
yum 可能会报告您没有安装这些软件包。
卸载 Docker 时,存储在 /var/lib/docker/
中的映像、容器、卷和网络不会自动删除。
安装方法
您可以根据需要以不同的方式安装 Docker Engine:
-
您可以设置 Docker 的存储库并从中进行安装,以方便安装和升级任务。这是推荐的方法。
-
您可以下载 RPM 包并手动安装,并完全手动管理升级。这对于在无法访问互联网的气隙系统上安装 Docker 等情况非常有用。
-
在测试和开发环境中,您可以使用自动化便捷脚本来安装 Docker。
使用 rpm 存储库安装
在新主机上首次安装 Docker Engine 之前,需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。
设置存储库
安装 yum-utils
软件包(提供 yum-config-manager
实用程序)并设置存储库。
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine
安装 Docker Engine、containerd 和 Docker Compose。
安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果提示接受 GPG 密钥,请验证指纹是否与 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
匹配,如果是,则接受。
此命令会安装 Docker,但不会启动 Docker。它还创建一个 docker
组,但是默认情况下不会向该组添加任何用户。
docker
用户组存在,但不包含任何用户,这就是为什么您需要使用 sudo
来运行 Docker 命令。
安装指定版本
如果安装了最新版本则跳过这一步。
yum list docker-ce --showduplicates | sort -r
返回的列表取决于启用的存储库,并且特定于您的 CentOS 版本。
通过完全限定的包名称安装特定版本,即包名称 ( docker-ce
) 加上版本字符串(第二列),并用连字符 ( - ) 分隔。例如, docker-ce-3:24.0.0-1.el8
。
将 <VERSION_STRING>
替换为所需的版本,然后运行以下命令进行安装:
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-buildx-plugin docker-compose-plugin
以非 root 用户身份管理 Docker
如果您不想在 docker
命令前面添加 sudo
,请创建一个名为 docker
的 Unix 组并向其中添加用户。当 Docker 守护进程启动时,它会创建一个可供 docker
组成员访问的 Unix 套接字。在某些 Linux 发行版上,系统在使用包管理器安装 Docker Engine 时会自动创建该组。在这种情况下,您无需手动创建组。
- 创建
docker
组。
sudo groupadd docker
- 将您的用户添加到 docker 组。
sudo usermod -aG docker $USER
-
注销并重新登录,以便重新评估您的组成员身份。
如果您在虚拟机中运行 Linux,则可能需要重新启动虚拟机才能使更改生效。
您还可以运行以下命令来激活对组的更改:
newgrp docker
如果您最初使用 sudo
运行 Docker CLI 命令,然后将用户添加到 docker
组,您可能会看到以下错误:
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
此错误表明 ~/.docker/
目录的权限设置不正确,因为之前使用了 sudo
命令。
要解决此问题,请删除 ~/.docker/
目录(它会自动重新创建,但所有自定义设置都会丢失),或者使用以下命令更改其所有权和权限:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R
配置 Docker 以使用 systemd 启动
许多现代 Linux 发行版使用 systemd 来管理系统启动时启动哪些服务。在 Debian 和 Ubuntu 上,Docker 服务默认在启动时启动。要使用 systemd 在其他 Linux 发行版上自动启动 Docker 和 Containerd,请运行以下命令:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
要停止此行为,请改用 disable
。
sudo systemctl disable docker.service
sudo systemctl disable containerd.service