生产环境安装Docker Engine核心是可控、可追溯、可复现,须用二进制离线部署(如Docker 27.0.3),禁用yum/apt安装;系统仅限Rocky Linux 9、Ubuntu 22.04 LTS或Debian 12;需迁移/var/lib/docker至独立磁盘,禁用insecure-registries和SELinux,禁止普通用户加入docker组。
生产环境安装 docker engine,核心是“可控、可追溯、可复现”,不能图快用一键脚本或开发模式部署。安全不是指防黑客,而是防配置漂移、防版本混乱、防权限失控、防数据意外丢失。
选对系统和架构
只在主流 Linux 发行版上部署:Rocky Linux 9、Ubuntu 22.04 LTS 或 Debian 12。CentOS 7 已停止维护,yum 源失效,Docker 官方也不再提供适配包,强行使用会引发依赖冲突和安全补丁缺失。
确认 CPU 架构是否匹配业务需求:x86_64 是默认选择;若用 ARM64(如鲲鹏、飞腾服务器),必须验证所有依赖镜像(尤其是闭源组件或定制驱动)是否提供 arm64v8 标签,不能仅凭 docker pull 成功就认为可用。
用二进制方式离线安装
生产环境推荐二进制部署,而非 apt 或 yum 包管理器安装。原因很实际:
- 版本完全可控,比如固定使用 Docker 27.0.3(当前稳定 LTS 版本),避免自动升级导致 containerd/runc 兼容问题
- 内网环境无需联网,通过跳板机传输 docker-27.0.3.tgz 即可完成部署
- 安装路径清晰(统一部署到 /usr/bin/),不污染系统包管理数据库
安装后务必验证:
docker version --format 'Client: {{.Client.Version}}\nServer: {{.Server.Version}}'
输出应显示客户端和服务端均为 27.0.3,且 systemctl status docker 显示 active (running)。
加固守护进程与存储路径
Docker daemon 默认以 root 权限运行,必须限制其行为边界:
- 修改默认数据目录:将 /var/lib/docker 迁移到独立挂载的磁盘(如 /data/docker),防止容器日志或镜像膨胀占满系统盘
- 禁用不安全的配置:确保 /etc/docker/daemon.json 中不含 "insecure-registries" 或 "experimental": true
- 启用 systemd 资源限制:在 /etc/systemd/system/docker.service 的 [Service] 段中加入:
LimitNOFILE=65536
MemoryLimit=4G(按宿主机内存比例调整)
RestartSec=10
权限与网络最小化原则
不给 Docker 绑定不必要的能力:
- 禁止将普通用户加进 docker 组——这是最大安全误区。运维操作应通过 sudo + 明确白名单命令控制,例如:
Cmnd_Alias DOCKER_CMD = /usr/bin/docker ps, /usr/bin/docker logs *, /usr/bin/docker exec -it * - 禁用 firewalld 和 SELinux:firewalld 会干扰 Docker 自建的 iptables 规则;SELinux 在 enforcing 模式下常拦截 volume 挂载和 socket 通信,应设为 disabled(修改 /etc/selinux/config 后重启)
- 不暴露 2375(HTTP)或 2376(HTTPS)远程 API 端口,除非有强认证网关前置,否则等同于开放 root 权限


















