Docker Compose #

  • 使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具

  • Docker Compose 将所管理的容器分为三层,分别是工程(project)、服务(service)、容器(container)

  • Docker Compose 运行目录下的所有文件(docker-compose.yml)组成一个工程,一个工程包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖,一个服务可包括多个容器实例

检测是否安装 docker compose #

docker-compose version

安装 #

这里以按照 1.27.4 版本为例,最新版本可以在 https://github.com/docker/compose/releases (opens new window) 查询到。

# 该步骤将 docker-compose 可执行文件下载到目标机器的 /usr/local/bin/docker-compose 位置;
# 如果网络比较慢,也可以手动下载,然放到 /usr/local/bin/docker-compose 位置。
sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

# 该步骤给 /usr/local/bin/docker-compose 可执行文件授权
sudo chmod +x /usr/local/bin/docker-compose

# 查看 docker-compose 版本,检查是否安装成功
docker-compose -v

或者

pip install docker-compose

docker-compose.yml 属性 #

Compose允许用户通过一个docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。 Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

version: '3.3'

services:
  gateway:
    build:
      context: ../dc3-gateway/
      dockerfile: ./Dockerfile
    image: pnoker/dc3-gateway:1.0.0
    restart: always
    ports:
      - 8000:8000
    container_name: dc3-gateway
    hostname: dc3-gateway
    volumes:
      - logs:/dc3-gateway/dc3/logs
    networks:
      dc3net:
        aliases:
          - dc3-gateway
volumes:
  logs:

networks:
  dc3net:
    driver: 'bridge'
  • version:docker-compose的版本号
  • context:Dockerfile的文件路径,也可以是到链接到git仓库的url,当提供的值是相对路径时,被解析为相对于撰写文件的路径,此目录也是发送到Docker守护进程的context
  • dockerfile:使用dockerfile文件来构建,必须指定构建路径
  • image:指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像
  • restart:重启策略
  • ports:端口映射列表,宿主机端口:容器端口
  • container_name:Compose容器名称格式是:<项目名称><服务名称><序号> 可以自定义项目名称、服务名称,但如果想完全控制容器的命名,可以使用标签指定
  • hostname:容器的hostname
  • volumes:挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER]格式,或者使用[HOST:CONTAINER:ro]格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统
  • networks:设置网络模式

常见指令 #

1.ps(列出所有运行容器) #

docker-compose ps

2.logs(查看服务日志输出) #

docker-compose logs

3.port(打印绑定的公共端口) #

docker-compose port iot-dc3-web 443

4.build(构建或者重新构建服务) #

docker-compose build

5.start(启动指定服务已存在的容器) #

docker-compose start iot-dc3-web

6.stop(停止已运行的服务的容器) #

docker-compose stop iot-dc3-web

7.rm(删除指定服务的容器) #

docker-compose rm iot-dc3-web

8.up(构建、启动容器) #

docker-compose up

9.kill(通过发送 SIGKILL 信号来停止指定服务的容器) #

docker-compose kill iot-dc3-web

10.pull(下载服务镜像) #

docker-compose pull

11.scale(设置指定服务运气容器的个数) #

docker-compose scale iot-dc3-web=3

12.run(在一个服务上执行一个命令) #

docker-compose run web bash
上次更新: 2023/5/19 00:04:27