Docker Compose 用来定义和运行多容器应用。现代 Docker 已内置 Compose v2 插件。
安装
新版 Docker(docker-ce 安装包已含插件),只需确认:
docker compose version
如果系统没有,单独安装:
sudo apt update
sudo apt install -y docker-compose-plugin
注意是
docker compose(带空格),旧版独立的docker-compose命令已被取代。
基本语法
compose.yaml(或 docker-compose.yml)的骨架:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
常用字段:image、build、ports、volumes、environment、depends_on、restart、networks。
常用指令
docker compose up -d # 构建并后台启动
docker compose up -d --build # 改过 Dockerfile 后重新构建
docker compose down # 停止并移除容器与网络
docker compose down -v # 连同卷一起删除(数据会丢)
docker compose ps # 查看服务状态
docker compose ls # 查看当前目录的 compose 项目
docker compose logs -f # 跟随全部服务日志
docker compose logs -f web # 只看某服务
docker compose exec web sh # 进入某服务容器
docker compose restart web # 重启某服务
docker compose pull # 更新镜像
docker compose config # 校验并打印解析后的配置
开发常用组合
docker compose up -d && docker compose logs -f # 启动并盯日志
docker compose down && docker compose up -d # 干净重启
docker compose exec db psql -U postgres # 进入数据库
环境变量
.env 文件自动加载,配合 $VAR 使用:
services:
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
cp .env.example .env
升级迁移提示
- 数据量大的服务迁移前先备份卷:
tar -czf pg.tar.gz pgdata/ - 改
image版本后用docker compose pull && docker compose up -d - 用
docker compose config验证改过的配置再重载