Skip to content

Docker 安装(CentOS)

本章将详细介绍如何在 CentOS 系统上安装和配置 Docker Engine。

系统要求

Docker Engine 支持以下 CentOS 版本:

  • CentOS 9 Stream
  • CentOS 8 Stream
  • CentOS 7(维护模式)

硬件要求:

  • 64 位处理器
  • 内核版本 3.10 或更高
  • 至少 2GB RAM(推荐 4GB 以上)
  • centos-extras 仓库需要启用

卸载旧版本

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

使用 YUM 仓库安装(推荐)

1. 安装 yum-utils

bash
sudo yum install -y yum-utils

2. 添加 Docker 仓库

bash
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3. 安装 Docker Engine

bash
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

如果提示接受 GPG 密钥,请确认指纹匹配后接受。

4. 启动 Docker

bash
sudo systemctl start docker

5. 验证安装

bash
sudo docker run hello-world

使用便捷脚本安装

bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装后配置

非 root 用户运行 Docker

bash
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

开机自启

bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

配置 Daemon

bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

sudo systemctl restart docker

常见问题

firewalld 冲突

CentOS 默认使用 firewalld,可能与 Docker 的 iptables 规则冲突:

bash
# 方法一:重启 Docker(推荐)
sudo systemctl restart docker

# 方法二:允许 Docker 端口
sudo firewall-cmd --zone=trusted --add-interface=docker0 --permanent
sudo firewall-cmd --reload

SELinux 问题

如果 SELinux 导致容器运行异常:

bash
# 查看 SELinux 状态
getenforce

# 临时设置为宽容模式
sudo setenforce 0

# 永久修改(编辑 /etc/selinux/config)
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

💡 生产环境建议保持 SELinux 开启,通过配置策略解决兼容性问题。

CentOS 7 特殊注意事项

CentOS 7 的内核版本较旧,建议升级内核以获得更好的 Docker 支持:

bash
# 安装 ELRepo 仓库
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

# 安装最新稳定内核
sudo yum --enablerepo=elrepo-kernel install kernel-ml

# 重启系统
sudo reboot

卸载 Docker

bash
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

延伸阅读