【Docker】RedHat 7.9 企业级环境 Docker 部署实战与避坑指南

张开发
2026/4/6 18:58:41 15 分钟阅读

分享文章

【Docker】RedHat 7.9 企业级环境 Docker 部署实战与避坑指南
1. 企业级环境下的Docker部署挑战在企业生产环境中部署Docker尤其是像RedHat 7.9这样的传统Linux发行版会遇到不少特有的挑战。我经历过多次这样的部署过程深知其中可能遇到的坑。不同于个人开发环境企业级部署需要考虑稳定性、安全性和长期维护性。首先RedHat 7.9使用的是较老版本的内核默认3.10.x而Docker对内核版本有一定要求。虽然3.10.x可以运行Docker但某些新功能可能无法使用。我曾经遇到过因为内核版本导致的容器网络性能问题后来不得不通过升级内核来解决。其次企业环境通常有严格的网络策略和安全限制。很多在线安装方法直接失效因为无法访问外部仓库。这时候就需要提前下载好所有依赖包或者搭建本地镜像源。有一次我在客户现场部署光是解决依赖问题就花了整整一天时间。2. 系统准备与依赖检查2.1 系统更新与基础配置在开始安装Docker之前确保系统处于最新状态是至关重要的。我建议先执行以下命令sudo yum update -y sudo reboot更新后重启系统可以确保所有更新生效。在企业环境中这一步经常被忽略导致后续安装出现各种奇怪的问题。接下来需要确认系统版本和架构cat /etc/redhat-release uname -mRedHat 7.9的典型输出应该是Red Hat Enterprise Linux Server release 7.9 (Maipo)架构应该是x86_64。如果是其他版本或架构可能需要调整安装方法。2.2 依赖包安装与常见问题安装基础依赖包时经常会遇到各种问题。我整理了一个更完整的依赖安装方案sudo yum install -y yum-utils device-mapper-persistent-data lvm2但这里有个大坑RedHat 7.9默认仓库中的container-selinux版本通常不满足Docker的要求。我建议直接从CentOS Vault获取wget http://vault.centos.org/7.9.2009/extras/x86_64/Packages/container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm sudo rpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm如果遇到依赖错误可能需要先安装policycoreutils-pythonsudo yum install -y policycoreutils-python3. Docker仓库配置与安装3.1 仓库配置的多种方案在企业环境中直接使用Docker官方仓库可能不是最佳选择。我推荐以下几种方案使用官方仓库适合有外网访问的环境sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo使用阿里云镜像国内速度更快sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo自建本地仓库完全离线环境sudo yum install -y createrepo mkdir -p /opt/docker-repo # 将下载的rpm包放入此目录后执行 createrepo /opt/docker-repo创建本地仓库配置文件/etc/yum.repos.d/docker-local.repo[docker-local] nameDocker Local Repository baseurlfile:///opt/docker-repo enabled1 gpgcheck03.2 Docker安装与版本选择安装Docker时版本选择很重要。生产环境建议安装特定版本而非最新版sudo yum list docker-ce --showduplicates | sort -r选择稳定的版本安装例如sudo yum install -y docker-ce-20.10.9 docker-ce-cli-20.10.9 containerd.io如果遇到依赖问题可以尝试sudo yum deplist docker-ce-20.10.9查看缺少的依赖然后手动安装。我曾经遇到过因为libseccomp版本过低导致的问题解决方法是从EPEL仓库安装新版sudo yum install -y epel-release sudo yum update -y libseccomp4. 服务配置与优化4.1 基础服务管理安装完成后启动Docker服务sudo systemctl start docker sudo systemctl enable docker验证服务状态sudo systemctl status docker docker --version4.2 生产环境关键配置企业环境中有几个关键配置需要修改修改存储驱动通常推荐overlay2sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { storage-driver: overlay2, log-opts: { max-size: 10m, max-file: 3 } } EOF配置镜像加速器国内环境sudo tee -a /etc/docker/daemon.json -EOF { registry-mirrors: [https://registry.docker-cn.com] } EOF重启服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker4.3 安全加固建议企业环境中安全配置不容忽视配置用户组避免直接使用rootsudo groupadd docker sudo usermod -aG docker $USER启用内容信任export DOCKER_CONTENT_TRUST1配置iptables规则如果需要sudo iptables -N DOCKER-USER sudo iptables -I DOCKER-USER -j DROP5. 验证与排错5.1 基础功能验证运行测试容器docker run --rm hello-world如果看到欢迎信息说明基础功能正常。进一步测试docker run -it --rm alpine sh在容器内执行命令后退出检查是否能正常停止和删除容器。5.2 常见问题排查如果遇到permission denied错误sudo chmod 666 /var/run/docker.sock如果容器无法访问外网sudo firewall-cmd --permanent --zonetrusted --add-interfacedocker0 sudo firewall-cmd --reload如果遇到存储空间问题docker system df docker system prune -f5.3 性能监控安装cAdvisor监控容器性能docker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --volume/dev/disk/:/dev/disk:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ google/cadvisor:latest访问http://localhost:8080可以查看详细的容器监控信息。6. 企业级部署进阶建议6.1 离线环境部署方案对于完全离线的企业环境需要提前准备所有依赖包。我通常使用以下方法在有网络的环境中下载所有rpm包mkdir -p ~/docker-offline cd ~/docker-offline yum install --downloadonly --downloaddir./ yum-utils device-mapper-persistent-data lvm2 repotrack docker-ce docker-ce-cli containerd.io将整个目录打包并复制到目标服务器tar czvf docker-offline.tar.gz docker-offline在目标服务器上安装sudo yum localinstall *.rpm6.2 高可用方案对于关键业务系统建议考虑Docker高可用方案使用Docker Swarm或Kubernetes集群配置共享存储如NFS用于持久化数据实现容器健康检查和自动恢复基础Swarm集群配置示例docker swarm init --advertise-addr MANAGER-IP docker swarm join-token worker6.3 日志与监控集成企业环境中集中式日志收集很重要配置Docker日志驱动sudo tee -a /etc/docker/daemon.json -EOF { log-driver: syslog, log-opts: { syslog-address: udp://logserver:514 } } EOF重启Docker服务使配置生效7. 长期维护与升级7.1 日常维护命令定期执行以下维护命令# 清理停止的容器 docker container prune -f # 清理未使用的镜像 docker image prune -a -f # 清理未使用的网络 docker network prune -f # 清理构建缓存 docker builder prune -f7.2 版本升级策略Docker版本升级需要谨慎操作先备份重要容器和数据查看当前版本docker version查看可用升级版本yum --showduplicates list docker-ce执行升级sudo yum update docker-ce docker-ce-cli containerd.io重启服务sudo systemctl restart docker7.3 故障恢复预案建议准备以下恢复方案备份/var/lib/docker目录记录所有容器的启动命令准备回滚脚本我曾经遇到过Docker服务无法启动的情况解决方法通常是sudo systemctl stop docker sudo rm -rf /var/lib/docker/* sudo systemctl start docker但这会删除所有本地镜像和容器所以只应在紧急情况下使用。

更多文章