docker-compose:删除容器名称的默认后缀?

And*_*ius 7 docker docker-compose

我的.yml:

version: '3'
services:
  myservice:
    image: myimage
Run Code Online (Sandbox Code Playgroud)

当我跑步时docker-compose -p myprefix -f my.yml up

它创建名为 的容器myprefix_myservice_1

是否可以生成名称,以便仅使用前缀(项目名称)和服务名称而不使用后缀?

在这种情况下应该是: myprefix_myservice

无论如何,后缀有什么意义_1?看起来很奇怪,似乎没有做任何重要的事情,比如增加_2新容器等?如果我运行相同的前缀/服务名称,它无论如何都会启动现有容器。所以真的没有任何理由让所有容器包含相同的_1后缀。

我可以使用container_name,但随后将无法为多个容器重用相同的撰写文件。

PS我读了这个问题:docker-compose image named: "prefix_%s_1" instead of "%s"

但它没有给出有关后缀的任何答案。

Jef*_*xon 6

这是一种在非 Swarm 模式下使用变量替换的方法:container_name

\n
# my.yml\nversion: \'3\'\nservices:\n  myservice:\n    image: redis:alpine\n    container_name: ${MYPREFIX}_myservice_${MYSUFFIX}\n
Run Code Online (Sandbox Code Playgroud)\n
$ MYPREFIX=prefix MYSUFFIX=test docker-compose -f my.yml up\n...\n$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\ndef6d2925819        redis:alpine        "docker-entrypoint.s\xe2\x80\xa6"   5 seconds ago       Up 5 seconds        6379/tcp            prefix_myservice_test\n
Run Code Online (Sandbox Code Playgroud)\n

  • 唯一,但您可以使用不同的前缀/项目名称来使其唯一。所以这就是为什么我不关心后缀。如果您不使用 swarm,则该后缀是静态的,这意味着它没有任何作用来保持唯一性。这就是为什么我想摆脱它。 (2认同)