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-utils2. 添加 Docker 仓库
bash
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo3. 安装 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 docker5. 验证安装
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 --reloadSELinux 问题
如果 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