Добавление или удаление опубликованного порта
На этом этапе вы научитесь добавлять или удалять опубликованный порт для Docker-сервиса. Публикация порта делает порт внутри контейнера доступным извне кластера Docker Swarm. Это необходимо для предоставления доступа к вашему приложению пользователям или другим сервисам.
На текущий момент наш сервис my-service
не имеет опубликованных портов, так как он просто выполняет простую команду echo
и завершает работу. Чтобы продемонстрировать публикацию портов, создадим новый сервис, который будет запускать простой веб-сервер. Для этого будем использовать образ nginx
.
Сначала загрузите образ nginx
:
docker pull nginx
Теперь создадим новый сервис с именем web-service
и опубликуем порт 80 контейнера на порт 8080 хоста.
docker service create --name web-service --publish 8080:80 nginx
Эта команда создает сервис с именем web-service
с использованием образа nginx
. Флаг --publish 8080:80
сопоставляет порт 80 внутри контейнера с портом 8080 на хосте.
Вы должны увидеть вывод, показывающий идентификатор сервиса.
Чтобы убедиться, что порт опубликован, вы можете проверить сервис:
docker service inspect web-service
Найдите раздел EndpointSpec
в выводе. Вы должны увидеть запись в разделе Ports
, которая показывает сопоставление опубликованного порта (например, PublishedPort: 8080
, TargetPort: 80
).
Теперь удалим опубликованный порт из сервиса web-service
. Для этого можно использовать команду docker service update
с флагом --publish-rm
, указав целевой порт внутри контейнера.
docker service update --publish-rm 80 web-service
Эта команда удаляет сопоставление порта для порта 80 внутри контейнера.
Вы должны увидеть вывод, указывающий на то, что сервис был обновлен.
Чтобы убедиться, что порт был удален, проверьте сервис еще раз:
docker service inspect web-service
В разделе EndpointSpec
больше не должно быть отображено сопоставление порта, которое вы только что удалили.