当前位置: 首页 > 知识库问答 >
问题:

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

曾嘉瑞
2023-03-14

在我的docker-compose.yml文件中,我有以下内容。但是容器没有选择主机名值。有什么想法吗?

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

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

共有3个答案

呼延俊风
2023-03-14

这似乎工作正常。如果我把你的配置放到一个文件里:

$ cat > compose.yml <<EOF
dns:
  image: phensley/docker-dns
  hostname: affy
  domainname: affy.com
  volumes:
    - /var/run/docker.sock:/docker.sock
EOF

然后把事情提出来:

$ docker-compose -f compose.yml up
Creating tmp_dns_1...
Attaching to tmp_dns_1
dns_1 | 2015-04-28T17:47:45.423387 [dockerdns] table.add tmp_dns_1.docker -> 172.17.0.5

然后检查容器内的主机名,一切似乎都很好:

$ docker exec -it stack_dns_1 hostname
affy.affy.com
姚雅珺
2023-03-14

我发现在使用docker run时,主机名对其他容器不可见。这是一个已知问题(也许更像是一个已知特性),部分讨论是:

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

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

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

不幸的是,这仍然不能与docker run一起使用。解决方法是为容器指定一个名称:

docker-compose run --name alias1 some-service

然后可以从其他容器中pinged通< code>alias1

更新:正如@grilix所指出的,您应该使用 docker-撰写运行 --use-alias 来使定义的别名可用。

段干帅
2023-03-14

docker-compose 3.0及更高版本开始,您只需使用主机名键:

version: "3.0"
services:
  yourservicename:
    hostname: your-name
 类似资料:
  • 问题内容: 在我的文件中,具有以下内容。但是,容器不会选择主机名值。有任何想法吗? 当我检查容器中的主机名时,它没有启动。 问题答案: 我发现使用时主机名对其他容器不可见。事实证明这是一个已知问题(也许是一个已知功能),其中一部分讨论是: 我们可能应该在文档中添加有关使用主机名的警告。我认为它很少有用。 就容器网络而言,分配主机名的正确方法是定义一个别名,如下所示: 不幸的是,这 仍然 无法使用。

  • 这是我当前的DockerFile: 我的项目是这样的:

  • 问题内容: 我有一个正在进行dockerizing的开发环境,并且我希望能够实时重新加载所做的更改而不必重建docker映像。我使用docker compose是因为redis是我应用程序的依赖项之一,我喜欢能够链接redis容器 我在我的中定义了两个容器: 我已经到了我应用程序的dockerfile中添加卷的地步,但是如何将主机的目录挂载到卷中,以便对代码的所有实时编辑都可以反映在容器中? 这是

  • 问题内容: 我有一个docker- compose文件,该文件在同一主机中部署8个不同的docker服务。是否可以在不同的主机中部署它?我想在一个主机中远程部署某些服务,而在其他主机中远程部署其他服务。我需要使用docker- swarm吗?还是更简单的方法? 我已经阅读到可以使用DOCKER_HOST来完成此操作,但是如果我使用此变量配置/ etc / default / docker,则所有服

  • 问题内容: 我在设置中运行官方Redis镜像https://hub.docker.com/_/redis/。 如何在该图像上使用docker-compose 运行? 我尝试了以下操作,但未连接: 图片的文档说我应该运行: 这是什么意思? 问题答案: 那会覆盖默认值:您试图在从未执行过的容器上运行。 如此处所述,您还可以使用以下方法进行测试: 如这个docker / compose问题2123 所述

  • 2017/09/04 15:58:33 server.go:73:使用API v1 2017/09/04 15:58:33 debugger.go:97:使用args启动进程:[/go/src/debug]无法启动进程:fork/exec/go/src/debug:不允许操作