1. CentOS 7.9系统下Docker安装全指南
作为Linux系统管理员,我经常需要在CentOS服务器上部署Docker环境。虽然现在CentOS 8/9和RHEL 9已经普及,但CentOS 7.9仍然是企业生产环境中使用最广泛的稳定版本。本文将分享我在CentOS 7.9上安装Docker Engine 20.10+和Docker Compose 2.0+的完整流程,包含国内镜像加速配置和常见问题解决方案。
注意:本文所有操作均基于最小化安装的CentOS 7.9.2009,内核版本要求3.10+。实际操作前建议先执行
yum update更新系统。
1.1 环境准备与依赖检查
在开始安装前,我们需要确认系统环境是否符合Docker运行要求:
# 查看系统版本 cat /etc/redhat-release # 查看内核版本 uname -r # 检查Device Mapper存储驱动 ls -l /sys/class/misc/device-mapper如果内核版本低于3.10,需要先升级内核:
sudo yum install -y kernel-lt sudo grub2-set-default 0 sudo reboot对于物理服务器,还需要在BIOS中开启虚拟化支持(VT-x/AMD-V)。云服务器通常已默认开启,可通过以下命令验证:
grep -E --color 'vmx|svm' /proc/cpuinfo1.2 卸载旧版Docker(如有)
如果系统存在旧版Docker(如docker/docker-engine),需要先彻底卸载:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine残留文件需要手动清理:
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd2. Docker Engine安装与配置
2.1 设置Docker仓库
推荐使用官方仓库安装,确保获取最新稳定版本:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo国内用户建议替换为中科大镜像源加速:
sudo sed -i 's@download.docker.com@mirrors.ustc.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo2.2 安装Docker Engine 20.10+
安装指定版本(推荐20.10.23):
sudo yum install -y docker-ce-20.10.23 docker-ce-cli-20.10.23 containerd.io或者安装最新稳定版:
sudo yum install -y docker-ce docker-ce-cli containerd.io2.3 配置Docker守护进程
创建daemon.json配置文件:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ] } EOF关键参数说明:
native.cgroupdriver: 与systemd集成overlay2: 推荐存储驱动registry-mirrors: 国内镜像加速
2.4 启动Docker服务
sudo systemctl enable docker sudo systemctl start docker验证安装:
sudo docker version sudo docker run hello-world3. Docker Compose 2.0+安装
3.1 官方二进制安装
下载最新版Docker Compose(当前为2.20.0):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose国内用户可使用代理下载:
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose设置执行权限:
sudo chmod +x /usr/local/bin/docker-compose验证安装:
docker-compose version3.2 使用yum安装(替代方案)
对于偏好包管理的用户:
sudo yum install -y docker-compose-plugin使用方式略有不同:
docker compose version4. 权限管理与用户组配置
4.1 非root用户操作Docker
将当前用户加入docker组:
sudo usermod -aG docker $USER newgrp docker验证非root权限:
docker ps4.2 解决权限错误
当出现"Got permission denied"错误时,检查:
# 查看docker.sock权限 ls -l /var/run/docker.sock # 确认用户组 groups $USER临时解决方案(不推荐生产环境):
sudo chmod 666 /var/run/docker.sock5. 存储与网络优化配置
5.1 修改Docker数据目录
默认存储路径为/var/lib/docker,如需更改:
sudo mkdir -p /data/docker sudo tee -a /etc/docker/daemon.json <<-'EOF' { "data-root": "/data/docker" } EOF sudo systemctl restart docker5.2 网络性能调优
针对生产环境的网络配置建议:
{ "default-address-pools": [ { "base": "192.168.0.0/16", "size": 24 } ], "mtu": 1500, "dns": ["8.8.8.8", "114.114.114.114"] }6. 常见问题排查
6.1 启动失败:virtualization support not detected
错误表现:
Docker Desktop failed to start because virtualization support wasn't detected解决方案:
- 确认BIOS中开启VT-x/AMD-V
- 检查内核模块加载:
lsmod | grep kvm- 对于云服务器,可能需要更换实例类型
6.2 Cannot connect to the Docker daemon
错误表现:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock排查步骤:
# 检查服务状态 systemctl status docker # 查看日志 journalctl -xe -u docker # 常见原因:SELinux阻止 sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config6.3 镜像拉取失败
配置国内镜像源后仍然无法拉取:
# 查看当前配置 docker info | grep Mirrors # 测试连接 curl -v https://registry-1.docker.io/v2/可尝试的备用镜像源:
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] }7. 生产环境最佳实践
7.1 日志轮转配置
防止Docker日志占用过多磁盘空间:
sudo tee /etc/logrotate.d/docker <<-'EOF' /var/lib/docker/containers/*/*.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF7.2 内核参数优化
在/etc/sysctl.conf中添加:
net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 vm.swappiness = 0 vm.overcommit_memory = 1 vm.panic_on_oom = 0 fs.inotify.max_user_instances = 8192 fs.inotify.max_user_watches = 524288应用配置:
sudo sysctl -p7.3 离线安装方案
在内网环境安装Docker的步骤:
- 在有网络的环境下载RPM包:
yum install --downloadonly --downloaddir=./docker-packages docker-ce docker-ce-cli containerd.io- 打包传输到目标机器:
sudo yum localinstall *.rpm8. 版本升级与维护
8.1 查看可用版本
列出所有Docker CE版本:
yum list docker-ce --showduplicates | sort -r8.2 升级到指定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io8.3 降级版本
先卸载当前版本,再安装旧版:
sudo yum downgrade docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io9. 安全加固建议
9.1 启用用户命名空间
{ "userns-remap": "default" }需要提前创建用户和组:
sudo groupadd -g 100000 dockremap sudo useradd -u 100000 -g dockremap -s /bin/false dockremap9.2 限制容器能力
{ "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 64000, "Soft": 64000 } }, "default-capabilities": [ "CHOWN", "DAC_OVERRIDE", "FSETID", "FOWNER", "NET_RAW", "SETGID", "SETUID", "SETFCAP", "SETPCAP", "NET_BIND_SERVICE" ] }10. 性能监控与维护
10.1 资源使用监控
# 查看容器资源使用 docker stats # 磁盘空间分析 docker system df # 详细空间占用 docker system df -v10.2 定期维护命令
# 清理停止的容器 docker container prune # 清理未使用的镜像 docker image prune -a # 清理构建缓存 docker builder prune # 全面清理 docker system prune -a --volumes在实际生产环境中,我建议将上述维护命令通过crontab定期执行:
0 3 * * * /usr/bin/docker system prune -f --filter "until=168h"