Adicionar ou remover uma porta publicada
Nesta etapa, você aprenderá como adicionar ou remover uma porta publicada para um serviço Docker. Publicar uma porta torna uma porta dentro do contêiner acessível de fora do cluster Docker Swarm. Isso é essencial para expor sua aplicação a usuários ou outros serviços.
Nosso my-service atual não tem nenhuma porta publicada porque ele apenas executa um simples comando echo e sai. Para demonstrar a publicação de portas, vamos criar um novo serviço que executa um servidor web simples. Usaremos a imagem nginx para isso.
Primeiro, puxe a imagem nginx:
docker pull nginx
Agora, vamos criar um novo serviço chamado web-service e publicar a porta 80 do contêiner para a porta 8080 no host.
docker service create --name web-service --publish 8080:80 nginx
Este comando cria um serviço chamado web-service usando a imagem nginx. A flag --publish 8080:80 mapeia a porta 80 dentro do contêiner para a porta 8080 no host.
Você deve ver uma saída indicando o ID do serviço.
Para verificar se a porta está publicada, você pode inspecionar o serviço:
docker service inspect web-service
Procure a seção EndpointSpec na saída. Você deve ver uma entrada em Ports que mostra o mapeamento da porta publicada (por exemplo, PublishedPort: 8080, TargetPort: 80).
Agora, vamos remover a porta publicada do web-service. Podemos fazer isso usando o comando docker service update com a flag --publish-rm, especificando a porta de destino dentro do contêiner.
docker service update --publish-rm 80 web-service
Este comando remove o mapeamento da porta para a porta 80 dentro do contêiner.
Você deve ver uma saída indicando que o serviço foi atualizado.
Para verificar se a porta foi removida, inspecione o serviço novamente:
docker service inspect web-service
A seção EndpointSpec não deve mais mostrar o mapeamento da porta que você acabou de remover.