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