☰
CentOS 7.6下Docker完整安装与优化指南
2026/11/6 2:55:01 网站建设 项目流程

1. CentOS 7.6 环境下 Docker 的完整安装指南

作为一名在 Linux 运维领域工作多年的老手,我深知在 CentOS 7.6 这类经典系统上安装 Docker 时可能遇到的各种坑。今天我就来分享一个经过实战检验的完整安装流程,不仅包含基础步骤,还会解释每个操作背后的原理,以及我在实际部署中积累的经验技巧。

Docker 作为当前最流行的容器化技术,能够显著提升应用部署效率。但在 CentOS 7.6 这样的老版本系统上安装时,需要特别注意依赖关系和配置细节。下面这个方案采用了阿里云镜像源,确保在国内网络环境下也能快速完成安装。

2. 环境准备与系统更新

2.1 系统权限检查

在开始之前,我们需要确认当前用户的权限情况。如果你不是 root 用户,所有命令都需要通过 sudo 来执行。可以通过以下命令检查当前用户权限:

whoami

如果显示的不是 root,那么后续所有命令都需要在前面加上 sudo。这也是为什么很多教程中会特别注明"如果没有权限,须在命令前加sudo"的原因。

2.2 更新系统软件包

保持系统软件包最新是确保 Docker 安装顺利的基础。执行以下命令更新所有已安装的软件包:

yum update -y

这个命令会:

  1. 刷新 yum 的软件包索引
  2. 检查所有可更新的软件包
  3. 自动下载并安装更新

注意:在生产环境中执行系统更新前,建议先评估更新可能带来的影响。某些情况下,特定版本的软件包可能需要保持不变以确保业务稳定性。

更新过程可能需要几分钟时间,具体取决于系统当前状态和网络速度。完成后,建议重启系统以确保所有更新生效:

reboot

3. 清理旧版 Docker

3.1 识别已安装的 Docker 组件

在安装新版 Docker 之前,必须彻底清理系统中可能存在的旧版本。不同版本的 Docker 组件可能会产生冲突,导致安装失败或运行异常。

首先检查系统是否已安装 Docker 相关软件包:

yum list installed | grep docker

3.2 彻底移除旧版本

如果发现系统中存在旧版 Docker,执行以下命令进行彻底删除:

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

这个命令会移除 Docker 的核心组件及其相关依赖。在某些情况下,可能还需要手动删除残留的配置文件和数据:

rm -rf /var/lib/docker rm -rf /etc/docker

经验分享:我曾经遇到过旧版 Docker 卸载不彻底导致新版无法正常启动的情况。后来发现是 /var/lib/docker 目录下的残留数据造成的。因此建议在卸载后检查这些目录是否已清理干净。

4. 安装 Docker 依赖环境

4.1 安装基础依赖包

Docker 需要一些基础工具和库才能正常运行。执行以下命令安装必要的依赖:

yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

这些软件包的作用分别是:

  • yum-utils:提供了 yum-config-manager 等实用工具
  • device-mapper-persistent-data 和 lvm2:为 Docker 提供存储驱动支持

4.2 配置 Docker 镜像源

为了在国内获得更快的下载速度,我们使用阿里云的 Docker CE 镜像源:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

这个命令会在 /etc/yum.repos.d/ 目录下添加一个 docker-ce.repo 文件,配置好阿里云的 Docker 软件源。

提示:如果你需要其他版本的 Docker,可以编辑这个文件,修改其中的版本号。例如将 stable 改为 test 或 edge 可以获取测试版或开发版。

5. Docker 核心组件安装

5.1 安装 Docker 引擎

现在可以正式安装 Docker 的核心组件了:

yum install -y docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin

这个命令会安装以下组件:

  • docker-ce:Docker 社区版引擎
  • docker-ce-cli:Docker 命令行工具
  • containerd.io:容器运行时
  • docker-buildx-plugin:扩展构建功能
  • docker-compose-plugin:Docker Compose 集成

5.2 验证安装结果

安装完成后,可以通过以下命令检查 Docker 版本,确认安装是否成功:

docker --version

正常输出应该类似于:

Docker version 24.0.5, build 24.0.5-1.el7

6. Docker 服务配置与启动

6.1 启动 Docker 服务

安装完成后,需要启动 Docker 守护进程:

systemctl start docker

6.2 设置开机自启

为了确保系统重启后 Docker 能自动运行,需要启用开机自启:

systemctl enable docker

这个命令会创建 systemd 的符号链接,使 Docker 服务随系统启动。

6.3 验证 Docker 运行状态

检查 Docker 服务是否正常运行:

systemctl status docker

正常运行的输出应该显示 "active (running)"。你也可以运行一个测试容器来验证 Docker 是否工作正常:

docker run hello-world

这个命令会下载一个测试镜像并运行,如果一切正常,你会看到 "Hello from Docker!" 的欢迎信息。

7. 常见问题与解决方案

7.1 镜像下载速度慢

虽然我们使用了阿里云的软件源安装 Docker,但默认的容器镜像仓库仍然是 Docker Hub,在国内访问可能较慢。可以通过配置镜像加速器来解决:

mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://<你的镜像加速器地址>.mirror.aliyuncs.com"] } EOF systemctl restart docker

提示:你可以在阿里云容器镜像服务中获取专属的镜像加速器地址。

7.2 存储驱动问题

在 CentOS 7.6 上,Docker 默认使用 devicemapper 存储驱动,这在某些情况下可能导致性能问题。建议改用 overlay2 驱动:

echo '{ "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] }' > /etc/docker/daemon.json systemctl restart docker

7.3 防火墙配置

如果发现无法访问容器暴露的端口,可能是防火墙阻止了连接。可以添加防火墙规则或暂时关闭防火墙:

# 开放 Docker 使用的端口范围 firewall-cmd --permanent --zone=public --add-port=2375-2377/tcp firewall-cmd --permanent --zone=public --add-port=7946/tcp firewall-cmd --permanent --zone=public --add-port=7946/udp firewall-cmd --permanent --zone=public --add-port=4789/udp firewall-cmd --reload # 或者临时关闭防火墙(不推荐生产环境使用) systemctl stop firewalld

8. 生产环境优化建议

8.1 日志管理

默认情况下,Docker 容器的日志会无限制增长,可能占用大量磁盘空间。可以通过修改 daemon.json 配置日志轮转:

{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }

8.2 资源限制

为了防止单个容器占用过多系统资源,可以设置默认的资源限制:

{ "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 65535, "Soft": 65535 } }, "default-runtime": "runc", "oom-score-adjust": -500 }

8.3 安全加固

生产环境中应该考虑以下安全措施:

  1. 启用用户命名空间隔离
  2. 限制容器能力
  3. 配置 TLS 认证
  4. 定期审计容器活动

一个基本的安全配置示例:

{ "userns-remap": "default", "no-new-privileges": true, "default-capabilities": [ "CHOWN", "DAC_OVERRIDE", "FSETID", "FOWNER", "MKNOD", "NET_RAW", "SETGID", "SETUID", "SETFCAP", "SETPCAP", "NET_BIND_SERVICE", "SYS_CHROOT", "KILL", "AUDIT_WRITE" ] }

9. 后续维护与管理

9.1 版本升级

当需要升级 Docker 版本时,可以按照以下步骤操作:

yum clean all yum makecache yum update docker-ce docker-ce-cli containerd.io systemctl restart docker

9.2 故障排查

当 Docker 出现问题时,可以查看日志定位原因:

journalctl -u docker -n 50 --no-pager

或者检查更详细的守护进程日志:

cat /var/log/messages | grep docker

9.3 数据备份

定期备份 Docker 的重要数据,包括:

  • /var/lib/docker:容器和镜像存储目录
  • /etc/docker:配置文件目录
  • docker-compose.yml 等编排文件

可以使用以下命令创建备份:

tar -czvf docker-backup-$(date +%Y%m%d).tar.gz /var/lib/docker /etc/docker

经过多年在 CentOS 环境部署 Docker 的经验,我发现严格按照上述流程操作可以避免大多数常见问题。特别是在生产环境中,前期的准备工作越充分,后期维护的成本就越低。建议在正式部署前,先在测试环境验证所有配置,确保万无一失。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询