게시된 포트 추가 또는 제거
이 단계에서는 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
이 명령은 nginx 이미지를 사용하여 web-service라는 서비스를 만듭니다. --publish 8080:80 플래그는 컨테이너 내부의 포트 80 을 호스트의 포트 8080 에 매핑합니다.
서비스 ID 를 나타내는 출력을 볼 수 있습니다.
포트가 게시되었는지 확인하려면 서비스를 검사할 수 있습니다.
docker service inspect web-service
출력에서 EndpointSpec 섹션을 찾습니다. Ports 아래에 게시된 포트 매핑을 보여주는 항목 (예: PublishedPort: 8080, TargetPort: 80) 이 표시되어야 합니다.
이제 web-service에서 게시된 포트를 제거해 보겠습니다. 컨테이너 내부의 대상 포트를 지정하여 --publish-rm 플래그와 함께 docker service update 명령을 사용하여 이 작업을 수행할 수 있습니다.
docker service update --publish-rm 80 web-service
이 명령은 컨테이너 내부의 포트 80 에 대한 포트 매핑을 제거합니다.
서비스가 업데이트되었음을 나타내는 출력을 볼 수 있습니다.
포트가 제거되었는지 확인하려면 서비스를 다시 검사합니다.
docker service inspect web-service
EndpointSpec 섹션에는 방금 제거한 포트 매핑이 더 이상 표시되지 않아야 합니다.