docker-compose 常用命令
Docker Compose 是一个定义和运行多容器应用程序的工具
在单个 YAML 配置文件中管理启动所有服务
官网地址:https://docs.docker.com/compose/
升级警告
- 现在 compose 已经升级到 V2 版本了,作为 docker 的一个子命令而非单独的 docker-compose 命令
- 命令使用方式改为了
docker compose
;中间不再有-
了
安装
- 新版V2:安装了最新版的 docker 即可直接使用
docker compose
命令了 - 旧版V1:需要单独安装 docker-compose
基础命令
命令 | 含义 |
---|---|
docker compose up | 启动并构建容器;--build 可以强制重新构建,-d 启动后在后台运行 |
docker compose down | 关闭所有内容,并完全删除容器 |
docker compose start/stop/restart | 容器组中容器的启停方式;可加上容器名字,对单个容器操作 |
docker compose ps | 查看所有服务运行状态 |
docker compose run {name} {cmd} | 在指定容器中运行命令 |
docker compose logs | 查看日志;-f 持续查看,与 tail -f 一样 |
YAML 配置文件常用元素
https://docs.docker.com/compose/compose-file/
元素 | 含义 |
---|---|
restart | 指定容器意外停止后的策略 |
command | 覆盖容器镜像声明的默认命令 |
ports | 端口映射 |
volumes | 挂载 |
working_dir | 指定工作目录 |
environment | 环境变量 |
depends_on | 设置启动顺序 |
watch | 自动加载文件变动,而无需重新启动服务 |
include | 包含引用其它 yaml 文件,可用于拆分服务 |
secrets | 加密信息 |
image | 指定镜像 |
build | 使用 Dockerfile 构建镜像 |
networks | 使用的网络 |
YAML 文件示例
yaml
services:
mysql:
image: mysql
restart: always
command: --default-authentication-plugin=mysql_native_password --mysqlx=0
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- "3306:3306"
volumes:
- "/data/mysql:/var/lib/mysql"
yaml
services:
mongo:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 123456
volumes:
- /data/mongo:/data/db
ports:
- 27017:27017
yaml
services:
redis:
image: redis
restart: always
command: redis-server --requirepass 123456
volumes:
- /data/redis:/data
ports:
- 6379:6379
- 文件名:
compose.yaml
(首选)或compose.yml
- 多个服务之间的调用访问使用服务名进行,而不是使用 127.0.0.1 或 localhost
资源限制
https://docs.docker.com/compose/compose-file/deploy/#resources
yaml
services:
python:
# ...
deploy:
resources:
limits:
cpus: '1'
memory: 1024M
- compose v3 版本通过
deploy.resources.limits
来进行配置资源限制 - 官方文档说这个只有在
Swarm
模式下才起作用;实测是通过docker compose up
启动之后,通过docker stats
查询,能看到内存限制,但是好像在超过限制后没有自动重启服务 - 还有顶级元素可以考虑,比如 mem_limit