Определение публичного порта по конкретному индексу контейнера
В некоторых сложных сценариях контейнер может предоставлять доступ к одному и тому же внутреннему порту несколько раз, потенциально сопоставляя его с разными портами хоста или интерфейсами. Хотя это менее характерно для простых сервисов вроде Nginx, такая возможность существует. В подобных случаях команда docker port
может возвращать несколько сопоставлений для одного внутреннего порта.
Чтобы получить конкретное сопоставление при наличии нескольких вариантов, можно использовать индекс. Вывод команды docker port
для заданного внутреннего порта представляет собой список сопоставлений. Конкретное сопоставление можно получить по его индексу, начиная с 0.
Предположим для демонстрации, что наш контейнер Nginx имеет несколько сопоставлений для порта 80. Чтобы получить первое сопоставление (индекс 0), используйте следующий формат команды:
docker port [CONTAINER_ID] [CONTAINER_PORT]/[PROTOCOL]/[INDEX]
В нашем примере с Nginx для получения первого сопоставления внутреннего порта 80 TCP следует использовать:
docker port [CONTAINER_ID] 80/tcp/0
Замените [CONTAINER_ID]
на фактический ID вашего контейнера Nginx.
Поскольку наш контейнер Nginx имеет только одно сопоставление для порта 80/tcp, эта команда вернет тот же результат, что и docker port [CONTAINER_ID] 80/tcp
, а именно 0.0.0.0:8080
.
Хотя данный пример с Nginx не демонстрирует всю мощь индексации (поскольку существует только одно сопоставление), понимание этой возможности важно для более сложных конфигураций контейнеров, где могут существовать множественные сопоставления для одного внутреннего порта.