CentOS 7.9下Docker安装与配置全攻略
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 sdownload.docker.commirrors.ustc.edu.cn/docker-ceg /etc/yum.repos.d/docker-ce.repo2.2 安装Docker Engine 20.10安装指定版本推荐20.10.23sudo 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.cgroupdriversystemd], 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.0sudo 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 wasnt 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/SELINUXenforcing/SELINUXpermissive/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 until168h