Docker nmap один контейнер из другого?

Я пытаюсь понять межконтейнерную связь с Docker.

У меня есть два контейнера.

Контейнер А имеет открытый порт, который доступен на localhost:777,

Так что, если я использую nmap -p 777 localhost Я вижу, что порт открыт.

Я вхожу в контейнер B:

docker exec -it containerB bash

Изнутри Контейнера B можно ли мне использовать тот же nmap команда сверху, чтобы увидеть, открыт ли порт 777 на контейнере A?

2 ответа

Решение

Я смог сделать это на основе информации, найденной здесь.

С хоста Docker:

sudo ip addr show docker0

Обратите внимание на IP-адрес docker0, в моем случае 172.17.0.1, Затем перейдите в контейнер B с:

docker exec -it <container> bash

Затем:

nmap -p 777 172.17.0.1

Нет, это было бы невозможно без --network="container:containerA" Arg.

Обычно контейнеры не используют один и тот же сетевой стек. Это позволяет использовать один и тот же порт в нескольких контейнерах, но каждый контейнер имеет свой локальный хост.

С --network="container:<container>" arg containerB будет использовать сетевой стек, поэтому вы можете использовать localhost для доступа к порту 777 контейнера A.

Что вы можете сделать без сетевого аргумента и как вы должны общаться с другим контейнером, так это создать сеть и поместить оба контейнера в сеть (или использовать ссылки). Затем вы можете получить доступ к другому контейнеру по его имени, как nmap -p 777 containerA

Другие вопросы по тегам