2017-05-17 4 views
1

다른 docker 컨테이너 포인트가 호스트의 동일한 HTTP 포트에 노출 될 수 있습니까?Docker가 포트를 노출합니다.

docker container run --publish 80:80 -d -it --name wp wordpress 
docker container run --publish 90:80 -d -it --name ci jenkins 
docker container run --publish 100:80 -d -it --name gitlab gitlab/gitlab-ce 

답변

1

그건 당신이 호스트에 동일한 포트를 사용하지 않는 명령. -p의 명명법은 "hostPort : containerPort"입니다. 따라서 컨테이너의 포트 80을 모두 포트 80, 90 및 100의 호스트로 매핑 할 수 있습니다. 전혀 충돌이 없습니다.

어쨌든, 가능한 충돌에 대한 귀하의 질문에 대답하십시오. 첫 번째 인스턴스에서, 당신의 명령이 있어야한다 :이 방법으로

docker container run --publish 80:80 -d -it --name wp wordpress 
docker container run --publish 80:80 -d -it --name ci jenkins 
docker container run --publish 80:80 -d -it --name gitlab gitlab/gitlab-ce 

, 당신이 할 수있는 것을 명령하지만 당신은 아마 Bind for 0.0.0.0:80 failed: port is already allocated. 말하는 오류가 발생합니다.

어쨌든, 오류없이 허용하는 도커의 경우 ... "도커 실행"명령에 컨테이너에서 호스트로 포트를 여는 명령이 있기 때문에 매핑 할 첫 번째 맵이 작동합니다 iptables 규칙은 "첫 번째 일치가 작동합니다"스타일에서 작동합니다. 이 경우에는 3 가지 iptables 규칙을 갖게 될 것이지만 작동 할 첫 번째 규칙은 1 가지입니다.

+0

이렇게하면 "도커 컨테이너 실행 - 게시 80:80 -d -it --name wp WordPress/도커 컨테이너 실행 - 게시 90:80 -d -it -name ci jenkins/도커 컨테이너 실행 - 게시 100 : 80 -d -it --name gitlab gitlab/gitlab-ce "그러나 호스트는 다른 포트를 사용합니다. – 001

+0

그러나 세 명령을 실행 한 후 호스트에서 http://127.0.0.1에 액세스하면 WordPress 사이트 만 제공됩니다. 나는 이미 그것을 테스트했다. – OscarAkaElvis

+0

마지막에 localhost : 80 (wordpress), localhost : 90 (jenkins), localhost : 100 (gitlab) 포트를 추가해야합니다. – 001

관련 문제