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

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

我有一台带有多个 lxc 容器的服务器。一些容器中安装了 docker。通常,这些 LXC 容器中的 docker compose 操作会产生格式为 的容器名称appname_service_1,例如wordpress_app_1wordpress_db_1,当appdb是 compose 文件中调用的两个服务wordpress时 - 您知道的。

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

由于这会破坏容器之间的所有路由,从而使容器不像它们应该的那样可丢弃,我想知道为什么要附加这些哈希。所有 LXC 容器都安装了相同的 docker 和相同的 docker-compose 版本。我想完全阻止这些哈希出现在我的 docker 容器名称中。

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

答案1

这是 docker-compose 的新行为,与 swarm 模式的行为相似。它完全不影响通过网络连接容器的能力,因为服务名称的 DNS 别名始终包含在内,在您的情况下为appdb。无需使用完整的容器名称即可使用循环 DNS 连接到服务的副本。

来自发行说明

重要的提示

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

答案2

已在版本中修复1.23.2

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

相关内容