Сеть узла Docker не работает

#docker #docker-networking

#docker #docker-сеть

Вопрос:

Я действительно смущен этой проблемой. У меня есть два компьютера в нашей внутренней сети. Оба компьютера могут выполнять пинг внутренних серверов. Оба компьютера имеют одинаковую версию docker. Я запускаю простой контейнер docker с docker run -it --rm --name cont1 --net=host java:8 помощью команды на обоих компьютерах. Затем ssh в контейнеры и попробуйте пропинговать внутренний сервер. Один из контейнеров может пинговать внутренний сервер, но другой не может связаться ни с одним внутренним сервером.

Как это может быть возможно? У вас есть какие-либо идеи по этому поводу?

Спасибо

Комментарии:

1. можете ли вы отобразить журнал этой команды на двух серверах: «sudo docker network inspect bridge»

2. cat /etc/resolv.conf на отказавшем узле. Кроме того, покажите ошибку ping, это тайм-аут или неразрешимый.

3. Я не знаю, как это работает сейчас. Я переустановил docker на Mac, и теперь он работает. Большое вам спасибо, ребята.

Ответ №1:

подключение контейнера к другим системам в той же сети выполняется путем сопоставления портов . для этого вам необходимо запустить контейнер docker с сопоставлением портов. like — docker run -it —rm —name cont1 -p host_ip:host_port:container_port java:8

например, docker run -it —rm —name cont1 -p 192.168.134.122:1234:1500 java:8

ПРИМЕЧАНИЕ: порт контейнера, указанный при запуске docker, отображается в Dockerfile

теперь, например, IP-адрес контейнера будет — 172.17.0.2 порт, указанный при запуске: 1500

Теперь запрос, отправляемый на host_ip(192.168.134.122) и host_port(1234), перенаправляется на контейнер с ip (172.17.0.2) и портом (1500).

Смотрите подробности привязки в iptables -L -n -t nat

Спасибо