Compose command compatibility with docker-compose

预计阅读时间:3分钟

Docker CLI 中的compose命令支持大多数docker-compose命令和标志. 预计它将成为docker-compose的替代品.

如果您看到compose命令中没有任何 Compose 功能,请在Compose GitHub 存储库中创建一个问题,以便我们对其进行优先级排序.

Commands or flags not yet implemented

以下命令尚未实现,可能会在以后实现. 让我们知道这些命令是否对您的用例具有更高的优先级.

compose build --memory :buildkit 尚不支持此选项. 该标志目前受支持,但被隐藏以避免破坏现有的 Compose 使用. 它没有任何效果.

Flags that will not be implemented

下面的列表包括我们不打算在 Docker CLI 中的 Compose 中支持的标志,因为它们已经在docker-compose中被弃用,或者因为它们与 Docker CLI 中的 Compose 无关.

  • compose ps --filter KEY-VALUE不相关,因为它与service命令的复杂使用,也因为它没有在docker-compose中正确记录.
  • compose rm --all在 docker-compose 中已弃用.
  • compose scale在 docker-compose 中已弃用(使用compose up --scale代替)

全局标志:

  • --compatibility已被重新定义为 Docker Compose V2. 现在这意味着在运行的命令中,V2 的行为将与 V1 以前一样.
    • 一个区别是容器名称上的单词分隔符. V1 使用_作为分隔符,而 V2 使用-使名称更友好. 所以在使用--compatibility Docker Compose 时应该再次使用_ . 只要确保坚持其中之一,否则 Docker Compose 将无法将容器识别为服务实例.

Config command

config 命令旨在显示 Docker Compose 用于运行实际项目的配置. 众所周知,在 Compose 文件的某些部分有一个短格式和一个长格式. 例如, ports条目. 在下面的示例中,我们可以看到扩展ports部分的配置命令:

docker-compose.yml:

services:
  web:
    image: nginx
    ports:
      - 80:80

使用$ docker compose config输出变成:

services:
  web:
    image: nginx
    networks:
      default: null
    ports:
    - mode: ingress
      target: 80
      published: 80
      protocol: tcp
networks:
  default:
    name: workspace_default

上面的结果是 Docker Compose 用于运行项目的完整配置.

New commands introduced in Compose v2

Copy

cp命令旨在在服务容器和本地文件系统之间复制文件或文件夹.
该命令是双向命令,我们可以服务容器复制或复制服务容器.

将文件从服务容器复制到本地文件系统:

$ docker compose cp my-service:~/path/to/myfile ~/local/path/to/copied/file

我们还可以从本地文件系统复制到服务的所有正在运行的容器中:

$ docker compose cp --all ~/local/path/to/source/file my-service:~/path/to/copied/file

List

ls 命令旨在列出 Compose 项目. 默认情况下,该命令只列出正在运行的项目,我们可以使用标志显示停止的项目,按条件过滤并将输出更改为json格式.

$ docker compose ls --all --format json
[{"Name":"dockergithubio","Status":"exited(1)","ConfigFiles":"/path/to/docker.github.io/docker-compose.yml"}]

Use --project-name with Compose commands

使用 GA 版本的 Compose,您可以运行一些命令:

  • 在包含项目撰写文件的目录之外
  • 或不使用--file标志指定 Compose 的路径
  • 或不使用--project-directory标志指定项目目录

当一个 compose 项目被加载一次后,我们可以使用-p--project-name来引用它:

$ docker compose -p my-loaded-project restart my-service

此选项适用于startstoprestartdown命令.

documentation, docs, docker, compose, containers

by  icopy.site