安装docker-compose:https://blog.csdn.net/weixin_44953227/article/details/116901201
compose 常用命令
# 查看帮助
docker-compose -h
docker-compose --help
# -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
# 启动所有容器,-d 将会在后台启动并运行所有的容器
docker-compose up -d
# 停用移除所有容器以及网络相关
docker-compose down
# 查看服务容器的输出
docker-compose logs
# 列出项目中目前的所有容器
docker-compose ps
# 构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
docker-compose build
# --build 可以重新构建镜像
docker-compose up --build
# 拉取服务依赖的镜像
docker-compose pull
# 重启项目中的服务
docker-compose restart
# 删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
docker-compose rm
# 在指定服务上执行一个命令。
docker-compose run ubuntu ping docker.com
# 设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose scale web=3 db=2
# 启动已经存在的服务容器。
docker-compose start
# 停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
docker-compose stop
yml规则
docker-compose.yml 是核心
官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/
docker-compose 对应的 docker 版本(引擎),docker向下兼容docker-compose
Compose file format | Docker Engine release |
---|---|
Compose specification | 19.03.0+ |
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.4 | 17.12.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
docker-compose.yml 分为3层
# 分为3层
version: "3.9" # 版本
services: # 服务
web: # 服务1
# 服务配置
images:
build:
ports:
...
redis: # 服务2
# 其他配置 网络/卷挂载、全局规则
volumes:
networks:
configs:
指定 Dockerfile 路径和名称
build:
context: ./dir # . 就代表当前路径
dockerfile: Dockerfile-alternate # Dockerfile名称
depends_on 容器启动顺序
version: "3.9"
services:
web:
build: .
# 会先启动 db 和 redis 容器再启动 web 容器
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
volumes
version: "3.9"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
mydata:
dbdata:
这些都可以在官方文档中找到对应的列子
https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes