linux容器部署需遵循四步标准化流程:一、准备基础系统与 docker 运行时;二、构建带版本标签的多阶段镜像并本地验证;三、配置持久化、网络、重启策略及资源限制;四、配置镜像加速、日志轮转与简易监控。

Linux 容器环境部署不是“装完 Docker 就能跑”,而是一套环环相扣的标准化动作。核心在于:环境可控、镜像可信、运行可管、变更可溯。下面按实际落地顺序,拆解真正通用、可复用的标准流程。
一、基础系统与运行时准备
这步决定后续是否稳定,不能跳过或凑合:
- 操作系统 选主流长期支持版:ubuntu 20.04 LTS 或 centos 8(注意 CentOS Stream 不等同于原生 CentOS 8);内核必须 ≥3.10,推荐 ≥5.4(尤其用 overlay2 存储驱动时)
- 安装前先清理旧 Docker:
yum remove docker docker-client docker-common(CentOS)或apt-get remove docker.io(Ubuntu) - 用国内源加速安装:阿里云源最稳,命令示例:
curl -fsSL https://get.docker.com | sh -s -- --mirror Aliyun - 安装后立即执行:
sudo usermod -aG docker $USER,然后重新登录终端——否则普通用户无法执行 docker 命令 - 验证:运行
docker run hello-world,成功输出即代表运行时就绪
二、镜像构建与本地验证
镜像不是越小越好,而是“最小必要 + 可调试 + 可复现”:
- Dockerfile 必须指定明确版本的基础镜像,如
FROM node:18-slim,禁用:latest - 多阶段构建是标配:编译用完整环境(如 golang:1.22),运行用 Alpine 或 scratch,最终镜像体积可降 60% 以上
- 构建时加标签并关联代码版本:
docker build -t myapp:v1.3.0 -f ./Dockerfile . - 本地启动测试:用
docker run -p 8080:8080 --rm myapp:v1.3.0检查 端口 、日志、健康 接口 是否正常 - 进容器调试用
docker exec -it sh,优先用sh而非bash(Alpine 默认无 bash)
三、容器运行与持久化配置
生产级运行≠裸跑 docker run,必须考虑数据、网络、重启策略:
- 关键数据必须挂载宿主机目录:
-v /data/myapp/logs:/app/logs,避免容器删除导致日志 / 上传文件丢失 - 配置文件建议挂载而非打入镜像:
-v /etc/myapp/conf.yml:/app/conf.yml:ro,便于不同环境快速切换 - 网络用自定义 bridge 网络:
docker network create myapp-net,容器间通过服务名通信,更安全可控 - 设置重启策略:
--restart=unless-stopped(适合常驻服务)或--restart=on-failure:3(适合批处理任务) - 限制资源防失控:
--memory=512m --cpus=1.5,尤其在多服务共存的服务器上必须加
四、面向生产的补充动作
上线前最后三件事,决定运维是否省心:
- 配置镜像加速器:编辑
/etc/docker/daemon.json,加入阿里云或腾讯云加速地址,避免拉取超时 - 启用日志轮转:在 daemon.json 中统一配置
"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"} - 建立简易监控:用
docker stats --no-stream定时采集 CPU/ 内存,或接入 prometheus + cadvisor - 若需多容器协同(如前后端 +DB),直接上
docker-compose.yml,比写一 堆docker run更清晰、可版本管理
基本上就这些。不复杂,但每一步都有明确目的和常见踩坑点。跳过任意一环,都可能在上线后花十倍时间补救。