#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
Спасибо