docker-compose 网络名称的最大长度是多少?

Ivo*_*net 1 jenkins docker docker-compose

在我们的 jenkins2 管道中,我们使用 docker-compose 进行一些测试,我们的 docker-compose 文件从分支名称 (git) 及其内部版本号的组合中获取其网络名称。

詹金斯文件片段:

def version = "$BRANCH_NAME-$BUILD_NUMBER"
def networkName = "network-$version"
sh "NETWORK_NAME=$networkName docker-compose up -d"
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml 片段:

version: '3.5'
networks:
  default:
    name: ${NETWORK_NAME}
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

看起来当我们有一个短的分支名称时一切正常,而当我们有一个长的分支名称时它会失败。

docker-compose 中的网络名称可以保留多长时间?我似乎无法在文档中找到它。是否有比获取分支名称更好的解决方案来获得唯一的网络名称?

我试过这个,但不知何故似乎完全矫枉过正:

echo $(git rev-parse --abbrev-ref HEAD) | md5 | cut -f1 -d" "
Run Code Online (Sandbox Code Playgroud)

将给出 md5 结果。

Ivo*_*net 5

因此,在几天后没有得到答案后,我自己进行了一些实证测试,发现不同操作系统的情况有所不同。我想为有同样问题的其他人写下我的答案。

这是我发现的:

  • mac 上的 docker mac 可以有很长的网络名称,甚至可以有/字符
  • 一些 linux 发行版可以有 16 个字符(例如 CentOs)和其他 15 个(例如 Ubuntu)。
  • 无法在 Windows 上进行测试,因为我没有可用的

所以如果你想保存并让你的 docker-compose.yml 在不同的环境中工作,你应该坚持一个最大长度为15 个字符的网络名称。

还使用了这个答案:网络接口名称的长度是多少?