如何在 docker-compose 中设置主机名?

新手上路,请多包涵

在我的 docker-compose.yml 文件中,我有以下内容。但是,容器不会获取主机名值。有任何想法吗?

 dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock

当我检查容器中的主机名时,它没有拾取 affy

原文由 David Medinets 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

我发现使用 docker run 时其他容器看不到主机名。事实证明这是一个 已知问题(也许更多是一个已知功能),部分讨论是:

我们可能应该在文档中添加关于使用主机名的警告。我认为它很少有用。

分配主机名的正确方法 - 就容器网络而言 - 是 定义一个别名,如下所示:

 services:
  some-service:
    networks:
      some-network:
        aliases:
          - alias1
          - alias2

不幸的是,这 仍然 不适用于 docker run 。解决方法是为容器分配一个名称:

 docker-compose run --name alias1 some-service

然后可以从其他容器 ping alias1

更新: 正如@grilix 指出的那样,您应该使用 docker-compose run --use-aliases 使定义的别名可用。

原文由 foz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题