gpt4 book ai didi

networking - docker-compose 没有将主机名添加到/etc/hosts

转载 作者:行者123 更新时间:2023-12-05 00:54:23 24 4
gpt4 key购买 nike

我正在研究一个 docker-compose 配置,它应该启动一个连接到 dnsmasq 容器的 openvpn 容器。 openvpn 服务器应该会自动发现 dnsmasq 容器并将其用作 dns 服务器。发现是通过在/etc/hosts 文件中搜索条目“dnsmasq”来完成的。

我有以下 docker-compose.yml 文件:

version: '2'
services:
data:
build: ./
dnsmasq:
cap_add:
- NET_ADMIN
hostname: dnsmasq
image: <dnsmasq image>
ports:
- 53:53/udp
restart: always
openvpn:
cap_add:
- NET_ADMIN
depends_on:
- data
- dnsmasq
image: <openvpn image>
ports:
- 1194:1194/udp
restart: always
volumes_from:
- data

我已将“dnsmasq”指定为 dnsmasq 容器的主机名,并希望它出现在 openvpn 容器的“/etc/hosts”中。这似乎不会发生。

这是来自 openvpn 容器内的/etc/hosts 的转储:
openvpn_1  | 127.0.0.1  localhost
openvpn_1 | ::1 localhost ip6-localhost ip6-loopback
openvpn_1 | fe00::0 ip6-localnet
openvpn_1 | ff00::0 ip6-mcastprefix
openvpn_1 | ff02::1 ip6-allnodes
openvpn_1 | ff02::2 ip6-allrouters
openvpn_1 | 172.19.0.4 d44a72f42ef9

我希望 d44a72f42ef9 是“dnsmasq”。

我究竟做错了什么?

我正在运行 docker-compose 1.8.1。

最佳答案

docker 中旧版本的链接通过添加到/etc/hosts 来工作。很可能您的系统最初是在这种范式下设置的,其中检索容器分辨率的方法内置在/etc/hosts 中。

然而,较新版本的 docker 不需要这个。只要容器在同一网络上,它们就会自动允许服务名称解析。因此,您可以通过以下方式访问它:

http://dnsmasq:port

关于networking - docker-compose 没有将主机名添加到/etc/hosts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com