我将带您逐步了解我的问题所在。
我正在旋转一个docker容器,并且图像尝试联系外部端点,我得到的只是:
在Docker容器中
curl: (6) Could not resolve host: my-external-endpoint.com
现在,当我登录到容器并执行curl
时,其结果相同。
现在,当我从主机上执行此操作时,我得到:
从主机上
<!DOCTYPE html>
<html lang="en">
<p>SUCCESS</p>
</html>
因此,我可以从主机访问端点,但不能从该主机上运行的容器访问该端点。
现在让我们看看我的设置。
在我的主机上,我正在运行resolvd。我的/etc/resolv.conf
文件是:
nameserver 127.0.0.53
我的cat /etc/systemd/resolved.conf | grep DNS
文件的内容是:
DNS=172.27.4.22 172.27.4.23
这些是我内部的DNS服务器IP,它们可以正常工作。
我的Docker容器中的/etc/resolv.conf
内容是:
nameserver 172.27.4.22
nameserver 172.27.4.23
我相信这是因为我的docker启动参数是/etc/systemd/system/docker.service.d/docker-dns.conf
:
[服务] 环境=“ DOCKER_DNS_OPTIONS = \ --dns 172.27.4.22 --dns 172.27.4.23 \ --dns-search \ --dns-opt ndots:2 --dns-opt超时:2 --dns-opt尝试次数:2 \
我还注意到我也无法使用IP到达端点。
我不确定为什么我的Docker容器无法访问任何内容。
我的Docker守护程序带有以下参数运行。
26371 /usr/bin/dockerd --graph=/var/lib/docker --log-opt max-size=50m --log-opt max-file=5 --iptables=false --disable-legacy-registry --dns 172.27.4.22 --dns 172.27.4.23 --dns-search <my-domain> --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2