Я пошагово покажу вам, в чем заключается моя проблема.
Я раскручиваю контейнер докера, и изображение пытается связаться с внешней конечной точкой, и все, что я получаю, это:
Изнутри Docker Container
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
Это IP-адреса моего внутреннего DNS-сервера, и они работают.
И содержимое /etc/resolv.conf
внутри моего контейнера Docker:
nameserver 172.27.4.22
nameserver 172.27.4.23
Я полагаю, это потому, что мои аргументы запуска Docker /etc/systemd/system/docker.service.d/docker-dns.conf
:
[Service] Environment = "DOCKER_DNS_OPTIONS = \ --dns 172.27.4.22 --dns 172.27.4.23 \ --dns-search \ --dns-opt ndots: 2 --dns-opt timeout: 2 - dns-opt попытки: 2 \
Я также заметил, что не могу достичь конечной точки с помощью IP-адреса.
Я не уверен, почему мой докер-контейнер не может получить доступ к чему-либо.
Мой демон 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