如何防止 docker-compose 将哈希附加到创建的容器名称?

sim*_*szu 7 containers lxc docker docker-compose

我有一个带有几个 lxc 容器的服务器。在一些容器中安装了 docker。通常在这些LXC容器导致容器名称,格式为泊坞窗撰写的动作appname_service_1,如wordpress_app_1wordpress_db_1,当appdb两个服务,被称为在wordpress撰写文件-你知道它。

但是今天我创建了另一个 LXC 容器并在其中安装了 docker。由于ansible,设置与其他容器相同。但是,docker 容器名称不同,例如wordpress_db_1_c9de200f9abd. 每当我删除容器并重新创建它时,最后的哈希值都会有所不同。

由于这使得容器不像它们应该的那样一次性,因为它破坏了容器之间的任何路由,我想知道为什么要附加这些哈希。所有 LXC 容器都安装了相同的 docker 和相同的 docker-compose 版本。我想在我的 docker 容器名称中完全阻止这些哈希。

为什么它们现在发生而以前没有发生?

BMi*_*tch 6

这是 docker-compose 的新行为,反映了 swarm 模式的行为。它根本不会影响通过网络连接容器的能力,因为在您的情况下app,始终包含服务名称的 DNS 别名和db. 不需要完整的容器名称来使用循环 DNS 连接到服务的副本。

发行说明

重要的提示

Compose 在此版本中创建的容器的默认命名方案已从 更改<project>_<service>_<index><project>_<service>_<index>_<slug>,其中<slug>是随机生成的十六进制字符串。请确保在升级之前相应地更新依赖于旧命名方案的脚本。

  • 这是 10 月 31 日对 1.23.0 版本的更改。这里讨论 https://github.com/docker/compose/issues/6316 (2认同)

小智 6

它已在1.23.2版中修复

恢复了 1.23.0 更改,该更改将随机字符串附加到由 docker-compose up 创建的容器名称,从而导致可寻址性问题。注意: docker-compose run 创建的容器将继续使用随机生成的名称,以避免在并行运行期间发生冲突。