docker-compose

使用Docker定义和运行多容器应用程序。

# 查看帮助信息
docker-compose --help
# 查看版本信息
docker-compose version

docker-compose.yml

Compose文件是定义服务、网络和卷的YAML文件。默认路径是./docker-compose.yml

使用Docker Compose来编排多个服务,但也可以仅“编排”一个服务,如下展示了仅启动Nginx服务的docker-compose.yml文件:

version: "3.9"
services:
  myNginx:  
    image: nginx
    ports:
      - 8080:80

docker-compose操作

注:docker-compose相关命令如果不在拥有Compose文件的目录下执行时会报错,除非使用-f Compose文件来明确指定Compose文件。

# 仅拉取镜像,并不创建容器
# 拉取所有服务的镜像
docker-compose pull
# 拉取指定服务名的镜像
docker-compose pull myNginx

# 校验并查看Compose文件
docker-compose config
# 仅校验Compose文件不打印输出
docker-compose config -q

# 为服务构建、(重新)创建、启动和附加到容器
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
# 常用参数如下:
# -d  在后台运行容器
docker-compose up -d
# --force-recreate  即使容器的配置和映像没有更改,也要重新创建容器。
docker-compose up --force-recreate
# --no-recreate   如果容器已经存在,请不要重新创建它们。
docker-compose up --no-recreate
# --no-start  创建服务后不要启动它们。原命令docker-compose create已废弃改为使用:
docker-compose up --no-start
# --scale  指定某服务启动几个容器,将覆盖Compose文件中的scale设置
docker-compose up -d --scale myNginx=2

# 查看允许中的容器
docker-compose ps
# 查看所有容器
docker-compose ps -a

# 启动服务的现有容器
docker-compose start [SERVICE...]
# 启动当前Compose文件下的所有容器:
docker-compose start
# 启动指定的服务myNginx:
docker-compose start myNginx

# 停止运行容器而不删除它们
docker-compose stop [options] [SERVICE...]
# 例如,关闭当前Compose下的所有运行中的容器:
docker-compose stop
# 关闭指定的服务myNginx:
docker-compose stop myNginx

# 重新启动所有已停止以及正在运行的服务
docker-compose restart [options] [SERVICE...]
# 注意:如果对docker-compose.yml配置进行了更改,运行此命令后并不会反映这些更改。
# 重新启动当前Compose文件下的所有容器:
docker-compose restart
# 重新启动指定的服务myNginx:
docker-compose restart myNginx

# 对服务运行一次性命令。
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]
# 常用的选项有:
# -d  在后台运行容器
# --name NAME  指定容器名
# -e KEY=VAL  设置环境变量
# --rm  运行后移除容器
# -p  将容器的端口发布到主机,即绑定端口
# -v  绑定装载卷

# 在执行中的容器内执行命令
docker-compose exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
# 例如,执行ls
docker-compose exec myNginx ls
# 等同于对该镜像执行:
docker exec fcfb5b4add13 ls

# 列出所创建容器使用的镜像
docker-compose images

# 显示服务的日志输出
docker-compose logs

# 暂停正在运行的服务容器
docker-compose pause

# 取消暂停已暂停服务的容器
docker-compose unpause

# 打印端口绑定的公共端口
docker-compose port [options] SERVICE PRIVATE_PORT
# 例如:
docker-compose port myNginx 80
0.0.0.0:8080

# 删除停止的服务容器
docker-compose rm [options] [SERVICE...]
# 例如,删除当前Compose文件下的所有已停止的容器
docker-compose rm
# 删除当前Compose文件下指定的已停止的容器
docker-compose rm myNginx

# 显示正在运行的进程
docker-compose top

# 停止容器并删除由docker-compose up创建的容器、网络、卷和镜像。
docker-compose down

参考资料