温馨提示×

CentOS与Docker如何兼容

小樊
39
2025-12-17 10:08:55
栏目: 智能运维

CentOS 与 Docker 的兼容性实践指南

一 支持范围与系统要求

  • 支持的主流版本为 CentOS 7/8(x86_64),需 64 位系统。Docker 对内核有硬性要求:建议 Linux 内核 ≥ 3.10;在 CentOS 7 上常见默认内核为 3.x,通常可运行,但为获得更好的稳定性与特性(如更好的 overlay2 支持),建议升级至 4.x 内核。生产环境优先选用固定稳定版 Docker,避免频繁升级带来不确定性。

二 标准安装步骤(在线)

  • 卸载旧版本(如有):
    sudo yum remove -y docker
    docker-client
    docker-client-latest
    docker-common
    docker-latest
    docker-latest-logrotate
    docker-logrotate
    docker-engine
  • 安装依赖:
    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 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 安装 Docker Engine(可指定版本):
    sudo yum install -y docker-ce docker-ce-cli containerd.io

    查看可安装版本:yum list docker-ce --showduplicates | sort -r

    安装指定版本:sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

  • 启动并设为开机自启:
    sudo systemctl start docker && sudo systemctl enable docker
  • 验证:
    docker version
    sudo docker run --rm hello-world

三 兼容性与稳定性配置

  • 存储驱动:优先使用 overlay2(性能与稳定性更佳)。在 /etc/docker/daemon.json 中设置:
    { “storage-driver”: “overlay2” }
  • 镜像加速(国内环境强烈建议):
    { “registry-mirrors”: [ “https://<YOUR_MIRROR_URL>”, “https://mirror.baidubce.com” ] }
    修改后执行:sudo systemctl daemon-reload && sudo systemctl restart docker
  • 代理配置(如存在企业代理):
    • 守护进程级:在 /etc/systemd/system/docker.service.d/http-proxy.conf 中添加
      [Service]
      Environment=“HTTP_PROXY=http://proxy.example.com:8080”
      Environment=“HTTPS_PROXY=http://proxy.example.com:8080”
      Environment=“NO_PROXY=localhost,127.0.0.1,.example.com”
      然后:sudo systemctl daemon-reload && sudo systemctl restart docker
  • SELinux 与防火墙:
    • 挂载目录权限问题可临时使用容器运行参数 –privileged(不推荐长期),更优做法是按需配置 SELinux 布尔值或上下文;
    • firewalld/iptables 的端口放行与转发需按实际网络策略配置,避免粗暴关闭防火墙。

四 常见问题与快速排查

  • 服务无法启动:
    • 查看状态:systemctl status docker
    • 查看日志:journalctl -u docker --no-pager -n 100
    • 常见原因:存储驱动不兼容、配置错误、端口冲突、代理不可达等,按日志逐项修复后重启服务。
  • 内核或性能问题:
    • CentOS 7 上若遇到异常或性能不佳,优先升级至 4.x 内核并启用 overlay2
  • 版本选择与回退:
    • 如遇兼容性问题,使用 yum 列出可用版本并回退到已验证的稳定版本:
      yum list docker-ce --showduplicates | sort -r
      sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
  • 离线环境:
    • 在一台可联网机器下载 docker-ce/containerd.io 等 RPM 包及依赖,拷贝至目标机后执行:
      sudo yum localinstall -y /path/to/*.rpm
      然后启动服务并验证。

0