4

두 개의 노드, 한 명의 관리자 및 한 명의 작업자로 구성된 웜이 있습니다. 나는 내 응용 프로그램에 액세스 할 수 있도록 항구에 게시 된 포트를 갖고 싶습니다. 어떻게 달성 할 수 있을지 궁금합니다. I가 고정 표시기가-구성 실행할 때도커 배포는 웜에 포트를 게시하지 않습니다.

version: '2' 
services: 
    server: 
    build: . 
    image: my-hub.company.com/application/server:latest 
    ports: 
     - "80:80" 

이 포트 (80)를 노출하고 나는이

docker deploy my-service 

이 포트를 게시하지 않습니다 배포 번들 실행할 때, 그러나 잘 작동, 그래서 그것은 단지 말한다 포트를 가리키는 대신 docker ps의 80/tcp. 아마도 이것은로드 밸런서를 부착하거나 멋진 명령을 실행하거나 실제로 다른 호스트의 구성을 추가하여 다중 호스트 집단에이 포트를 노출해야하기 때문일 수 있습니다.

누군가이 포트를 공개하기 위해 구성 /해야 할 일을 이해할 수있게 도와 줄 수 있습니까?

가장 좋은 시나리오는 포트 80이 노출되어 있고 다른 호스트 이름에서 액세스하면 다른 응용 프로그램으로 보내집니다.

업데이트 : 내가 HA 프록시를 실행하기 위해이 저장소를 발견

docker service update -p 80:80 my-service_server 
docker kill <my-service_server id> 

응용 프로그램을 배포 한 후 나는 다음과 같은 명령을 실행하면 작동하는 것 같다, 내가 그러나, 큰 보인다 고정 표시기 스스로 지원 새로운 스웜 모드를 사용하여이 서비스를 내 서비스에 별도로 적용 할 수 없습니다. 내가 명령을 만들 고정 표시기 서비스를 통해 서비스를 연결하는 방법을 찾을 수 없습니다 그러나

Internet -> HAProxy -> Service_A -> Container A 

가 최적으로 지금과 같습니다

https://github.com/docker/dockercloud-haproxy

네트워크가 보일 것입니다 방법을 설명 하단에 좋은 설명이있다 네트워크를 설정하는 방법이며,이 네트워크를 서비스에 적용하면 HAProxy에서이를 선택할 것입니다.

- 마커스

답변

4

떼 모드는 다른 방식으로 포트를 게시합니다. docker ps에 나타나지 않습니다. 호스트에 포트를 게시하지 않기 때문에 포트를 모든 노드에 게시하므로 서비스 복제본간에 균형을 조정할 수 있습니다.

docker service inspect my-service의 포트가 표시되어야합니다.

docker service update my-service --publish-add 80:80 
+0

내 서비스가 "게시 된 포트"(공개적으로 웜 외부)로 포트를 노출하고 싶지 않지만 내부 서비스 (웜 내부)에 노출시켜 다른 서비스에서 다른 서비스에서 사용하려는 경우 어떻게해야합니까? 떼. –

+0

그러면 아무 것도 할 필요가 없습니다. 이는 서비스가 모두 기본 네트워크에 있거나 모두 동일한 네트워크에 참여하는 한 기본 동작입니다. – dnephin

5

에 연결할 수 있어야합니다 포트 매핑을 표시하십시오.

0

docker service ls 것입니다 :이처럼 그냥 나중에 생성 서비스를 업데이트 포트를 게시 할 수 있습니다 순간에 대한 이해로

다른 서비스는 지금까지 my-service:80