1. Docker与CentOS环境概述
在Linux系统上部署容器化环境已成为现代运维和开发的标配技能。作为最稳定的企业级Linux发行版之一,CentOS与Docker的组合尤其适合生产环境。不同于Windows或Mac上的Docker Desktop方案,在CentOS这类服务器操作系统上安装Docker需要关注系统内核兼容性、存储驱动选择等关键因素。
我曾在多个CentOS 7/8生产环境中部署Docker,发现版本适配问题是最常见的坑。比如CentOS 7默认的3.10内核需要升级才能支持Overlay2存储驱动,而CentOS 8 Stream则可能遇到containerd与系统服务的冲突。本文将基于最新稳定版Docker CE(24.0.5)和CentOS 7.9/8.5,详解从零开始的完整安装流程。
2. 环境准备与依赖处理
2.1 系统基础检查
在安装前需要确认以下关键指标:
# 查看系统版本 cat /etc/redhat-release # 检查内核版本(需≥3.10) uname -r # 检查存储驱动支持 lsmod | grep overlay对于CentOS 7用户,如果内核版本低于5.x,建议先升级内核:
sudo yum install -y elrepo-release sudo yum --enablerepo=elrepo-kernel install kernel-lt -y sudo grub2-set-default 0 sudo reboot2.2 旧版本清理
若系统存在旧版Docker,必须彻底清除:
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/containerd3. 正式安装流程
3.1 配置官方仓库
CentOS 7/8的默认仓库不包含最新Docker版本,需要添加官方源:
# 安装依赖工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置稳定版仓库 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo国内用户建议替换镜像源加速下载:
sudo sed -i 's@download.docker.com@mirrors.aliyun.com/docker-ce@g' /etc/yum.repos.d/docker-ce.repo3.2 安装核心组件
执行以下命令安装Docker引擎:
sudo yum install -y docker-ce docker-ce-cli containerd.io验证各组件版本:
rpm -qa | grep -E 'docker|containerd'4. 关键配置调整
4.1 存储驱动优化
编辑配置文件/etc/docker/daemon.json(不存在则新建):
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": [ "https://registry.docker-cn.com", "https://mirror.baidubce.com" ] }应用配置并重启服务:
sudo systemctl daemon-reload sudo systemctl restart docker4.2 用户权限管理
将普通用户加入docker组以避免sudo操作:
sudo usermod -aG docker $USER newgrp docker # 立即生效验证权限:
docker run hello-world5. 服务管理与故障排查
5.1 系统服务控制
常用服务命令:
# 启动服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker # 查看运行状态 sudo systemctl status docker5.2 常见问题解决
问题1:存储驱动不兼容症状:docker info显示警告WARNING: overlay2: the backing xfs filesystem is formatted without d_type support
解决方案:
# 检查文件系统特性 xfs_info / | grep ftype # 若返回ftype=0则需要重建文件系统问题2:防火墙冲突症状:容器网络无法联通
处理方案:
sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0 sudo firewall-cmd --reload问题3:磁盘空间不足定期清理无用资源:
# 删除停止的容器 docker container prune # 删除悬空镜像 docker image prune # 全面清理 docker system prune -a6. 生产环境优化建议
6.1 日志轮转配置
创建/etc/docker/daemon.json的补充配置:
{ "log-opts": { "max-size": "50m", "max-file": "3", "compress": "true" } }6.2 内核参数调优
在/etc/sysctl.conf中添加:
net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness = 0 vm.max_map_count=262144应用修改:
sudo sysctl -p6.3 容器运行时保护
限制容器资源使用:
docker run -it --cpus 1.5 --memory 2g --memory-swap 2g nginx7. 验证与功能测试
7.1 基础功能验证
运行测试容器:
docker run --rm alpine echo "Hello Docker"检查网络连通性:
docker run --rm alpine ping -c 4 baidu.com7.2 持久化存储测试
验证卷挂载功能:
mkdir test_volume docker run -v $(pwd)/test_volume:/data --rm alpine sh -c "echo 'test' > /data/file.txt" cat test_volume/file.txt7.3 性能基准测试
使用压力测试工具:
docker run --rm --cpus 2 stress --cpu 2 --timeout 60s监控资源占用:
docker stats