" />
文章

Docker Compose 常用命令

Docker Compose 常用命令

Docker Compose 文件基本结构

Docker Compose 文件是 Docker Compose 工具的核心,用于定义和配置多容器 Docker 应用。这个文件通常命名为 docker-compose.yml,采用 YAML(YAML Ain't Markup Language)格式编写。

Docker Compose 文件基本结构如下:

  • 版本(version): 指定 Compose 文件格式的版本。版本决定了可用的配置选项。

  • 服务(services):

定义了应用中的每个容器(服务)。每个服务可以使用不同的镜像、环境设置和依赖关系。

  • 镜像(image): 从指定的镜像中启动容器,可以是存储仓库、标签以及镜像 ID。
  • 命令(command): 可选,覆盖容器启动后默认执行的命令。在启动服务时运行特定的命令或脚本,常用于启动应用程序、执行初始化脚本等。
  • 端口(ports): 可选,映射容器和宿主机的端口。
  • 依赖(depends_on): 依赖配置的选项,意思是如果服务启动是如果有依赖于其他服务的,先启动被依赖的服务,启动完成后在启动该服务。
  • 环境变量(environment): 可选,设置服务运行所需的环境变量。
  • 重启(restart): 可选,控制容器的重启策略。在容器退出时,根据指定的策略自动重启容器。
  • 服务卷(volumes): 可选,定义服务使用的卷,用于数据持久化或在容器之间共享数据。
  • 构建(build): 指定构建镜像的 dockerfile 的上下文路径,或者详细配置对象。

  • 网络(networks): 定义了容器间的网络连接。

  • 卷(volumes): 用于数据持久化和共享的数据卷定义。常用于数据库存储、配置文件、日志等数据的持久化。

示例

version: "3.8" # 定义版本, 表示当前使用的 docker-compose 语法的版本
services: # 服务,可以存在多个
    servicename1: # 服务名字,它也是内部 bridge 网络可以使用的 DNS name,如果不是集群模式相当于 docker run 的时候指定的一个名称,
   #集群(Swarm)模式是多个容器的逻辑抽象
        image: # 镜像的名字
        command: # 可选,如果设置,则会覆盖默认镜像里的 CMD 命令
        environment: # 可选,等价于 docker container run 里的 --env 选项设置环境变量
        volumes: # 可选,等价于 docker container run 里的 -v 选项 绑定数据卷
        networks: # 可选,等价于 docker container run 里的 --network 选项指定网络
        ports: # 可选,等价于 docker container run 里的 -p 选项指定端口映射
        restart: # 可选,控制容器的重启策略
        build: #构建目录
        depends_on: #服务依赖配置
    servicename2:
        image:
        command:
        networks:
        ports:
    servicename3:
    #...
volumes: # 可选,需要创建的数据卷,类似 docker volume create
  db_data:
networks: # 可选,等价于 docker network create

docker-compose up会根据 docker-compose.yml 文件中定义的服务来创建和启动容器,并将它们连接到默认的网络中。

启动命令

# 在当前目录下寻找 docker-compose.yml 文件,并根据其中定义的服务启动应用程序
docker-compose up
# 后台启动
docker-compose up -d
# 强制重新创建所有容器,即使它们已经存在
docker-compose up --force-recreate
# 重新构建镜像
docker-compose up --build
# 指定要启动的服务名称,而不是启动所有服务
# 可以同时指定多个服务,用空格分隔。
docker-compose up service_name

另外,如果 Compose 文件名称不是 docker-compose.yml 也没问题,可以通过 -f 参数指定。

docker-compose -f docker-compose.prod.yml up

停止

# 在当前目录下寻找 docker-compose.yml 文件
# 根据其中定义移除启动的所有容器,网络和卷。
docker-compose down
# 停止容器但不移除
docker-compose down --stop
# 指定要停止和移除的特定服务,而不是停止和移除所有服务
# 可以同时指定多个服务,用空格分隔。
docker-compose down service_name

查找

# 查看所有容器的状态信息
docker-compose ps
# 只显示服务名称
docker-compose ps --services
# 查看指定服务的容器
docker-compose ps service_name

其他

docker-compose version 查看版本
docker-compose images 列出所有容器使用的镜像
docker-compose kill 强制停止服务的容器
docker-compose exec 在容器中执行命令
docker-compose logs 查看日志
docker-compose pause 暂停服务
docker-compose unpause 恢复服务
docker-compose push 推送服务镜像
docker-compose start 启动当前停止的某个容器
docker-compose stop 停止当前运行的某个容器
docker-compose rm 删除服务停止的容器
docker-compose top 查看进程
License:  CC BY 4.0