在已有生产环境的主机上,安装docker需要注意什么

发布于:2025-07-03 ⋅ 阅读:(27) ⋅ 点赞:(0)

在生产环境主机上安装 Docker 需谨慎,避免影响现有服务。以下是关键注意事项和操作建议:

一、系统兼容性检查

  1. 操作系统版本

    • Linux:主流发行版(CentOS 7+/Ubuntu 18.04+/Debian 10+),建议使用 LTS 版本。
    • 内核要求:Linux 内核 ≥ 3.10(推荐 4.19+),可通过 uname -r 检查。
    • 不支持:生产环境不建议在 macOS/Windows 上部署 Docker 服务端。
  2. 架构支持

    • 确认主机架构(x86_64、ARM64 等),Docker 官方仅支持主流架构。

二、依赖与冲突检查

  1. 卸载旧版本

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  2. 检查冲突软件

    • 避免与 LXC、Rkt、Podman 等容器技术共存。
    • 若已安装 Containerd/Runc,需确保版本兼容(Docker ≥ 20.10 依赖 Containerd ≥ 1.4)。

三、安装方式选择

  1. 推荐:官方仓库安装

    # 添加 Docker 官方 GPG 密钥
    curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    # 添加稳定仓库
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # 安装 Docker Engine
    sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  2. 避免:包管理器直接安装

    • yum install dockerapt install docker 可能安装旧版,需通过官方仓库安装最新稳定版。

四、生产环境优化配置

  1. 数据目录规划

    • 修改 /etc/docker/daemon.json,指定数据存储路径(避免默认 /var/lib/docker 占满系统盘):
      {
        "data-root": "/data/docker",
        "storage-driver": "overlay2"
      }
      
  2. 性能优化

    • 使用 overlay2 存储驱动(替代 aufs/devicemapper):
      sudo mkdir -p /etc/docker
      echo '{ "storage-driver": "overlay2" }' | sudo tee /etc/docker/daemon.json
      
  3. 日志限制

    • 配置容器日志大小限制,避免日志撑爆磁盘:
      {
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "10m",
          "max-file": "3"
        }
      }
      

五、安全强化措施

  1. 最小权限原则

    • 避免使用 root 用户运行 Docker,创建专用用户并加入 docker 组:
      sudo usermod -aG docker $USER
      
  2. 禁用 Docker 远程 API

    • 生产环境默认不暴露 2375/2376 端口,如需远程管理,使用 SSH 隧道或 TLS 加密。
  3. 镜像安全扫描

    • 安装 Trivy/Clair 等工具,扫描镜像漏洞:
      docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:latest image nginx:alpine
      

六、网络与防火墙配置

  1. 网络策略

    • 避免容器与宿主机端口冲突,使用端口映射时优先选择高位端口(>1024)。
  2. 防火墙规则

    • 关闭不必要的端口,仅开放业务所需端口:
      # 允许 Docker 内部通信
      sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0
      sudo firewall-cmd --reload
      

七、监控与日志集成

  1. 资源监控

    • 集成 Prometheus+Grafana 监控 Docker 服务:
      # 启动 cAdvisor 收集容器指标
      docker run -d --name=cadvisor --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 google/cadvisor:latest
      
  2. 日志聚合

    • 配置 Fluentd/ELK 收集容器日志:
      {
        "log-driver": "fluentd",
        "log-opts": {
          "fluentd-address": "localhost:24224"
        }
      }
      

八、验证安装

# 启动 Docker 服务
sudo systemctl start docker && sudo systemctl enable docker

# 验证安装
sudo docker run --rm hello-world

九、生产环境最佳实践

  1. 版本管理

    • 锁定 Docker 版本(如 24.0.6),避免自动升级引入兼容性问题。
  2. 备份策略

    • 定期备份 /var/lib/docker(数据目录)和配置文件。
  3. 高可用设计

    • 生产集群建议使用 Docker Swarm/Kubernetes,避免单点故障。

十、常见问题排查

  1. 存储驱动冲突

    • 若启动报错 overlay2: the backing xfs filesystem is formatted without d_type,需重新格式化磁盘并添加 ftype=1 选项。
  2. DNS 解析问题

    • /etc/docker/daemon.json 中配置 DNS 服务器:
      {
        "dns": ["8.8.8.8", "8.8.4.4"]
      }
      

通过以上步骤,可确保 Docker 在生产环境中安全、稳定运行,同时避免对现有服务造成影响。


网站公告

今日签到

点亮在社区的每一天
去签到