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 将无法将容器识别为服务实例.
- 一个区别是容器名称上的单词分隔符. V1 使用
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
此选项适用于start
、 stop
、 restart
和down
命令.