Поскольку вы пометили это как kubernetes :
Вы не можете напрямую отправлять пакеты отдельным контейнерам Docker.Вы должны отправить их в другое место, которое сможет их направить.В случае простого Docker вам нужно использовать опцию docker run -p
для публикации порта на хосте, и тогда контейнеры будут доступны через опубликованный порт через IP-адрес хоста или DNS-имя.В контексте Kubernetes вам нужно настроить Службу, которая способна направлять трафик на Pod (или Pod), на которых работает ваш контейнер, и вы в конечном итоге получаете доступ к контейнерам через эту Службу.
Внутренний IP-адрес контейнераадреса практически бесполезны во многих контекстах.(Они не могут быть достигнуты из вне хоста вообще; в некоторых средах вы даже не можете связаться с ними из-за пределов Docker на том же хосте.) Существуют и другие механизмы, которые вы можете использовать для доступа к контейнерам (docker run -p
из-за пределов Docker,межконтейнерный DNS из Docker), и вам вообще не нужно искать эти IP-адреса.
В вашем вопросе особое внимание уделяется ping (1).Это инструмент для отладки очень низкого уровня, использующий сетевой протокол ICMP.Если отправка пакетов с использованием ICMP на самом деле является ядром вашего рабочего процесса, у вас возникнут трудности с его запуском в Docker или Kubernetes.Я подозреваю, что вы на самом деле не так.Не беспокойтесь о возможности напрямую проверять контейнеры;используйте инструменты более высокого уровня, такие как curl (1), если вам необходимо убедиться, что запрос достигает своего контейнера.