使用 `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