Docker容器化改造的核心是用最少最稳的配置固化环境,确保开发、测试、上线运行同一份定义。关键在精准而非繁复:Windows/macOS装Docker Desktop 4.25.0,Linux用官方源安装并配置国内镜像加速;Dockerfile需轻量分层、利用缓存;多服务用docker-compose.yml声明式编排;务必同步时区、限制资源、注入敏感配置。

Docker容器化改造的核心不是“配一堆东西”,而是用最少、最稳的配置把环境固化下来,让开发、测试、上线跑的都是同一份定义。关键不在多,而在准。
基础环境装好就走下一步
Windows/macOS直接装 Docker Desktop(推荐 4.25.0 稳定版);Linux 用户用官方源安装,比如 Ubuntu:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
装完立刻做两件事:
- 把当前用户加进
docker组,避免每次敲sudo:sudo usermod -aG docker $USER(执行后需重新登录或重启终端) - 配国内镜像加速(不配的话拉镜像慢到怀疑人生):
编辑/etc/docker/daemon.json,填入:{ "registry-mirrors": ["https://<你的阿里云镜像地址>.mirror.aliyuncs.com"] }然后重启服务:
sudo systemctl restart docker
Dockerfile 要轻、要分层、要可复现
别一上来就 COPY 整个项目。典型结构是:
- 选轻量基础镜像,比如
node:18-alpine或python:3.10-slim - 先 COPY
requirements.txt或package.json,再RUN pip install或npm install(利用构建缓存) - 最后 COPY 源码,避免依赖没变时反复重装
- 用
WORKDIR明确路径,EXPOSE声明端口(只是说明,不自动映射) - 启动命令用
CMD ["npm", "start"]这种 exec 格式,别写sh -c "..."
多服务靠 docker-compose.yml 编排
一个开发环境通常不止一个容器。比如 Web + PostgreSQL + Redis,写成:
version: '3.8'
services:
web:
build: .
ports: ["3000:3000"]
volumes: ["./src:/app/src"]
depends_on: [db, redis]
db:
image: postgres:15
environment: {POSTGRES_PASSWORD: devpassword}
volumes: ["pgdata:/var/lib/postgresql/data"]
redis:
image: redis:7-alpine
ports: ["6379:6379"]
volumes:
pgdata:这样 docker-compose up 一条命令,三个服务一起起,网络自动打通,web 里直接用 db 当主机名连数据库。
别跳过这三件事
- 容器内时间要和宿主机一致:启动时加
-e TZ=Asia/Shanghai或挂载/etc/localtime - 生产环境必须设资源限制,比如
mem_limit: 512m、cpus: "1.0",防止单个容器吃光资源 - 敏感配置(密码、密钥)别硬编码在 Dockerfile 或 compose 文件里,用
.env文件或 secrets 机制注入
本质上,容器化不是把原来的手动操作搬到容器里,而是用声明式方式重新定义“这个服务该怎么运行”——定义清楚了,配置就自然落定了。


















