Docker Compose 文件 v2 和 v3 版本的区别

发布于:2024-05-01 ⋅ 阅读:(161) ⋅ 点赞:(0)

Docker Compose 文件 v2 和 v3 版本的区别

版本声明

在 Docker Compose 文件的开头,您需要声明正在使用的 Compose 版本。v2 版本的声明如下:

version: '2'

而 v3 版本的声明如下:

version: '3'

服务定义

在 v2 版本中,服务定义使用 services 关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的服务定义示例:

v2 版本:

version: '2'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword

v3 版本:

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword

网络定义

在 v2 版本中,网络定义使用 networks 关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的网络定义示例:

v2 版本:

version: '2'
networks:
  app_net:
    driver: bridge
services:
  web:
    ...
    networks:
      - app_net
  db:
    ...
    networks:
      - app_net

v3 版本:

version: '3'
networks:
  app_net:
    driver: bridge
services:
  web:
    ...
    networks:
      - app_net
  db:
    ...
    networks:
      - app_net

卷定义

在 v2 版本中,卷定义使用 volumes 关键字,而在 v3 版本中,该关键字保持不变。以下是两个版本的卷定义示例:

v2 版本:

version: '2'
volumes:
  db_data:
services:
  db:
    image: postgres:latest
    volumes:
      - db_data:/var/lib/postgresql/data

v3 版本:

version: '3'
volumes:
  db_data:
services:
  db:
    image: postgres:latest
    volumes:
      - db_data:/var/lib/postgresql/data

依赖关系和健康检查

在 v2 版本中,可以使用 depends_on 关键字定义服务之间的依赖关系,以及使用 healthcheck 关键字定义健康检查。在 v3 版本中,这些关键字保持不变。以下是两个版本的依赖关系和健康检查示例:

v2 版本:

version: '2'
services:
  web:
    build: ./web
    ports:
      - "80:80"
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword

v3 版本:

version: '3'
services:
  web:
    build: ./web
    ports:
      - "80:80"
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword

Docker Compose 文件 v2 和 v3 版本的特性

v2 版本特性

  • 支持 depends_on 关键字定义服务之间的依赖关系。
  • 支持 healthcheck 关键字定义健康检查。
  • 支持 constraints 关键字定义服务部署约束。
  • 支持 secrets 关键字定义加密数据。
  • 支持 configs 关键字定义配置文件。
  • 支持 scale 关键字定义服务副本数量。
  • 支持 deploy 关键字定义服务的部署方式。

v3 版本特性

  • 与 v2 版本相比,v3 版本提供了更好的性能和稳定性。
  • 支持新的服务控制指令,如 up, down, start, stop, restart, kill, ps, logs, pause, unpause, rm 等。
  • 支持新的服务编排功能,如 profilesstack
  • 支持新的网络和卷插件。
  • 支持新的环境变量处理方式。
  • 支持新的健康检查语法。
  • 支持新的服务更新策略。
  • 支持新的服务扩展策略。
  • 支持新的服务监控和日志记录功能。
  • 支持新的服务安全特性,如 secretsconfigs

网站公告

今日签到

点亮在社区的每一天
去签到