乐趣区

关于docker:开始使用DOCKER-COMPOSE-V2

Compose V2 我的项目启动于 2021 年 6 月,直到 2022 年 4 月 26 号,公布了 GA 版本。在公布 GA 版本后,社区也发表对于 Compose V1 将不会再进行性能更新,将在 6 个月后完结生命周期(EOL),期间会进行要害的平安和谬误修复。

V1 与 V2 的兼容比照

确保 V1 和 V2 之间的兼容性对于日常工作流程至关重要,上面是 V2 中两个要害的更改

更改 潜在影响 迁徙
V2 原生反对 BuildKit,并且默认开启 开发者在 V2 中将默认应用 BuildKit 进行镜像构建 可通过设置环境变量不应用 DOCKER_BUILDKIT=0
容器名字中应用 代替了 _ 作为分隔符 如果在脚本中应用了容器名字,这可能会导致谬误 能够通过 “–compatibility” 标记来敞开此更改

对于更多的兼容性更改,请查看兼容性文档

如何装置 Compose V2

Windows,MacOS 和 Linux 上应用 Docker Desktop,就自带了 Compose V2,可通过命令 docker compose 执行。也能够通过配置“Use Docker Compose V2“来设置 docker-compose 别名到 docker compose

如果没有应用 Docker Desktop for Linux,而是间接应用的 Docker Engine,则须要额定装置 docker-compose-plugin 或者独立的二进制包。

例如对于 Ubuntu, 能够通过 Docker 官网的 APT 源间接装置

❯ sudo apt update
❯ sudo apt install docker-compose-plugin

其余 Linux, 例如在我的 openSUSE 上,通过手动从 Github 下载二进制文件进行装置(留神抉择版本和平台架构)

❯ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
❯ mkdir -p $DOCKER_CONFIG/cli-plugins
❯ wget https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64
❯ mv docker-compose-linux-x86_64 $DOCKER_CONFIG/cli-plugins/docker-compose
❯ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

执行一下命令测试

❯ docker compose version
Docker Compose version 2.6.0

更多装置形式,请查看官网文档。

Compose V2 的劣势

在 Docker CLI 中疾速交付新性能

  • 反对 GPU 主机 – 如果 Docker 主机有 GPU 设施(显卡 ) 并且 Docker 引擎进行了相干配置, 则 Compose 服务能够定义 GPU 设施的预留。
  • 反对配置服务启用(Profiles)– 通过选择性服务器启用来为多种用处和环境启动 Compose 利用模型,如下 Compose 文件
version: "3.9"
services:
  frontend:
    image: frontend
    profiles: ["frontend"]

  phpmyadmin:
    image: phpmyadmin
    depends_on:
      - db
    profiles:
      - debug

  backend:
    image: backend

  db:
    image: mysql

默认执行 docker compose up 将只会启动 backenddb 服务,要启动相应配置的服务,须要应用 --profile 标记或者设置环境变量 COMPOSE_PROFILES,例如

❯ docker compose --profile debug --profile frontend up
❯ COMPOSE_PROFILES=frontend,debug docker compose up
  • 新增了 cp 命令 – 在服务容器和本地文件系统间接拷贝文件和目录
  • 新增了 ls 命令 – 列出以后环境中的 Compose 我的项目(利用栈)

开发到生产的无缝转换

通过星散成我的项目,能够容易的应用 Compose V2 将多容器利用部署到 AWS ECS 或者 Azure ACI 环境。

具体示例可参考 Deploying WordPress to the Cloud。

在 Golang 中创立一个同构的 Docker 生态系统

在 Compose V2 之前,V1 是应用 Python 语言编写的,不在 Docker 的语言生态系统里。而 V2 应用 Golang 语言编写,能够提供来自 Moby、CLI 或任何基于 Golang 的我的项目代码,缩小了很多通过 Python 重写新性能或缺点的开发,容易从其余 Docker 工具(例如 BuildKit)减少新性能到 Compose 中。

通过 Golang,当初能够公布一个动态的二进制执行文件,相比 Python,大大简化了更新和依赖治理。

在没有 Compose 文件的状况下执行命令

Compose V2 能够在以下状况下通过 --project-name|-p 选项来治理运行的 Compose 我的项目容器服务

  • 当前目录不蕴含我的项目 Compose 文件(不在 Compose 我的项目文件目录下)
  • 不通过 --file 标记指定 Compose 文件
  • 不通过 --project-directory 标记指定 Compose 我的项目目录

可执行的命令:psexec,startstoprestartdown

能够先通过 docker compose ls 列出以后环境的 Compose 我的项目

❯ docker compose ls
NAME                STATUS              CONFIG FILES
dbweb               running(1)          docker-compose.yml
monitor             running(1)          /home/mengz/dockerapp/monitor/docker-compose.yml
traefik             running(1)          /home/mengz/dockerapp/traefik/docker-compose.yml
truenas             running(1)          /home/mengz/dockerapp/truenas/docker-compose.yml

而后通过 -p < 我的项目名 > 命令 来治理我的项目服务

❯ docker compose -p dbweb ps
NAME                COMMAND             SERVICE             STATUS              PORTS
dbweb_pgadmin       "/entrypoint.sh"    pgadmin             running             443/tcp

❯ docker compose -p dbweb exec pgadmin sh
/pgadmin4 $ exit

总结

这里简略介绍了 Docker Compose V2 的一些个性和性能,随着 V1 的逐步淘汰,咱们要拥抱 V2,并且尝试其提供的新性能。
对于具体的 Docker Docker,请参考官网文档。

参考:

  • Announcing Compose V2 General Availability
  • Install Docker Compose

同时公布在【Mengz’s Blog】

退出移动版