服务器容器化运维是构建可持续交付与可观测运行体系的连贯流程,核心目标为应用“跑得稳、扩得快、查得清、修得准”,涵盖环境安全基线、docker引擎加固、多阶段镜像规范、编排健康检查及cadvisor+prometheus+loki+portainer可观测闭环。

服务器容器化运维搭建不是一次性配置,而是一套连贯、可复用的流程。核心目标是让应用跑得稳、扩得快、查得清、修得准。重点不在“装Docker”,而在构建可持续交付和可观测的运行体系。
环境准备与安全基线
选一台云服务器或物理机(推荐 Ubuntu 22.04 LTS 或 CentOS Stream 9),先做三件事:
- 关闭密码登录,强制使用 SSH 密钥认证;
- 用 ufw 或云平台安全组,只开放必要端口(22、80、443,Docker API 端口 2375/2376 生产环境建议禁用);
- 创建专用运维用户(如 ops),加入 docker 组,不直接用 root 操作容器。
系统层面还要调高文件描述符限制、禁用 swap(避免 OOM 误判)、启用 systemd cgroup v2(Docker 24+ 推荐)。
Docker 引擎与运行时加固
别用第三方包管理器装 Docker,直接走官方脚本:
curl -fsSL https://get.docker.com | sh sudo usermod -aG docker ops newgrp docker
然后编辑 /etc/docker/daemon.json,写入生产级配置:
- 存储驱动设为 overlay2(Linux 内核 ≥ 4.0 默认支持);
- 日志驱动用 json-file 并限制大小(
"max-size": "10m", "max-file": "3"),防磁盘打满; - 国内用户务必加 registry-mirrors(如阿里云或中科大镜像源);
- 禁止容器以 root 运行:
"userns-remap": "default"(需提前创建映射用户)。
重启后执行 docker info 验证配置生效,再跑 docker run --rm hello-world 确认基础能力。
镜像构建与交付规范
所有服务必须通过 Dockerfile 构建,禁用手动 commit。关键原则:
- 用 多阶段构建:编译和运行分离,比如 Go/Java/Python 应用,最终镜像只含二进制或 runtime,体积压到最小;
- 基础镜像统一用 -slim 或 -alpine(如
python:3.11-slim),不用latest标签; - 容器内以非 root 用户启动(
user 1001),并显式设置工作目录、时区、语言环境; - 镜像命名遵循
:-,例如api-gateway:prod-v1.4.2。
构建完成后推送到私有 Registry(如 Harbor)或云厂商镜像仓库,不依赖本地缓存交付。
编排、监控与日常运维闭环
单机用 Docker Compose 足够,但必须写清楚 healthcheck、restart 策略和资源限制:
services:
nginx:
image: nginx:1.25-alpine
restart: unless-stopped
mem_limit: 256m
cpu_quota: 50000 # 相当于 0.5 核
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 5s
retries: 3
生产环境建议接入轻量级可观测链路:
- 用 cAdvisor + Prometheus + Grafana 收集容器 CPU/内存/网络/IO 实时指标;
- 用 loki + promtail 聚合容器日志,支持按 service、host、level 检索;
- 部署 Portainer CE 提供 Web 界面,用于快速启停、查看日志、进入容器调试(仅限内网访问)。
最后配好定期清理策略:docker system prune -f --filter "until=72h" 清过期镜像和悬空卷,避免磁盘告警。











