使用 `docker compose config` 命令生成 docker compose 文件时不要添加 `name` 键值
do not add `name` key value when generating docker compose file using `docker compose config` command
docker compose
CLI 命令和 docker-compose
CLI 之间的实现似乎存在差异。尽管它们遵循相同的 Compose 规范。
服务
作为一个简单的例子,我有两个撰写文件
docker-compose.hello-world.yml
version: '3.7'
services:
hello:
image: hello-world:nano-server
container_name: hello_world
docker-compose.base.yml
非常简单的基础文件
version: '3.7'
volumes:
dummy-vol:
我可以使用 -f
标志覆盖它们,如下所示:
docker compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config > docker-compose.yml
差异
如果使用 Docker 引擎中内置的 docker compose
CLI 使用上述命令:
docker compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config
生成的结果配置为:
这里test-con
只是我在
中有文件的目录的名称
name: test-con
services:
hello:
container_name: hello_world
image: hello-world:nano-server
networks:
default: null
networks:
default:
name: test-con_default
然而,当使用 docker-compose
CLI 时,
docker-compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config
生成以下输出:
services:
hello:
container_name: hello_world
image: hello-world:nano-server
version: '3.7'
volumes:
test: {}
如您所见,name
键值不是由 docker-compose
生成的。
有没有办法禁止从 docker compose
CLI 生成 name
键值?
系统规格
docker version
Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17.5
Git commit: e91ed5707e
Built: Mon Dec 13 22:31:40 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.17.5
Git commit: 459d0dfbbb
Built: Mon Dec 13 22:30:43 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.1
GitCommit: 10f428dac7cec44c864e1b830a4623af27a9fc70.m
runc:
Version: 1.1.0
GitCommit: v1.1.0-0-g067aaf85
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker compose version
Docker Compose version 2.3.3
docker-compose version
docker-compose version 1.29.2, build unknown
docker-py version: 5.0.3
CPython version: 3.10.2
OpenSSL version: OpenSSL 1.1.1m 14 Dec 2021
当 docker 升级到 v2.4.1
时,此差异已解决。
进行相同的测试后:
docker-compose -f docker-compose.hello-world.yml config > std.yml
以及
docker compose -f docker-compose.hello-world.yml config > cli.yml
并使用 diff
检查是否有任何差异
diff std.yml cli.yml
现在在两个工具中提供相同的配置
name: test-com
services:
hello:
container_name: hello_world
image: hello-world:nano-server
networks:
default: null
networks:
default:
name: test-com_default
docker compose
CLI 命令和 docker-compose
CLI 之间的实现似乎存在差异。尽管它们遵循相同的 Compose 规范。
服务
作为一个简单的例子,我有两个撰写文件
docker-compose.hello-world.yml
version: '3.7'
services:
hello:
image: hello-world:nano-server
container_name: hello_world
docker-compose.base.yml
非常简单的基础文件
version: '3.7'
volumes:
dummy-vol:
我可以使用 -f
标志覆盖它们,如下所示:
docker compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config > docker-compose.yml
差异
如果使用 Docker 引擎中内置的 docker compose
CLI 使用上述命令:
docker compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config
生成的结果配置为:
这里test-con
只是我在
name: test-con
services:
hello:
container_name: hello_world
image: hello-world:nano-server
networks:
default: null
networks:
default:
name: test-con_default
然而,当使用 docker-compose
CLI 时,
docker-compose -f docker-compose.hello-world.yml -f docker-compose.base.yml config
生成以下输出:
services:
hello:
container_name: hello_world
image: hello-world:nano-server
version: '3.7'
volumes:
test: {}
如您所见,name
键值不是由 docker-compose
生成的。
有没有办法禁止从 docker compose
CLI 生成 name
键值?
系统规格
docker version
Client:
Version: 20.10.12
API version: 1.41
Go version: go1.17.5
Git commit: e91ed5707e
Built: Mon Dec 13 22:31:40 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.12
API version: 1.41 (minimum version 1.12)
Go version: go1.17.5
Git commit: 459d0dfbbb
Built: Mon Dec 13 22:30:43 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.1
GitCommit: 10f428dac7cec44c864e1b830a4623af27a9fc70.m
runc:
Version: 1.1.0
GitCommit: v1.1.0-0-g067aaf85
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker compose version
Docker Compose version 2.3.3
docker-compose version
docker-compose version 1.29.2, build unknown
docker-py version: 5.0.3
CPython version: 3.10.2
OpenSSL version: OpenSSL 1.1.1m 14 Dec 2021
当 docker 升级到 v2.4.1
时,此差异已解决。
进行相同的测试后:
docker-compose -f docker-compose.hello-world.yml config > std.yml
以及
docker compose -f docker-compose.hello-world.yml config > cli.yml
并使用 diff
diff std.yml cli.yml
现在在两个工具中提供相同的配置
name: test-com
services:
hello:
container_name: hello_world
image: hello-world:nano-server
networks:
default: null
networks:
default:
name: test-com_default