2017-12-12 11 views
0

-p으로 포트 매핑을 이해합니다. 나는 단지 호스트 네트워크에 하나 개의 포트에 내 컨테이너 포트를 매핑 할 수 있습니다 이해 : 이미 컨테이너가 실행되고 있기 때문에Docker networking : 동일한 포트를 열었던 컨테이너가 2 개있는 이유는 무엇입니까?

$ docker run -d -p 8080:80 nginx 

가 다른 컨테이너가 8080의 포트가 매핑 할 수 없습니다. 이 포트 8080 docker0 포트 80에 매핑 될 등등 고정 표시기 컨테이너 포트 80

에하지만 다른 nginx를 가질 수있는 이유를 정말 이해가 안 :

$ docker -run -d -p 8888:80 

내가 매핑해야합니다을 호스트 (8888)의 다른 포트에있는 내 포트를 사용하지만 도커 0 네트워크가 포트 80을 두 번 열 수있는 이유는 무엇입니까? 포트 80이있는 컨테이너 뒤에는 2 개의 컨테이너가 있습니다. 작동하는 것으로 알고 있지만 그 이유를 이해하지 못합니다.

답변

1

각 컨테이너는 별도의 네트워크 네임 스페이스에서 실행됩니다. 이것은 호스트와 네트워크 자원 (주소, 인터페이스, 라우트 등)을 공유하지 않는 격리 된 네트워크 환경입니다. 컨테이너에서 서비스를 시작하면 마치 다른 시스템에서 시작한 것처럼 보입니다. 서로 다른 네트워크 네임 스페이스에 있기 때문에 당신이 포트 80

에서 실행되는 웹 서버와 호스트에 두 개의 서로 다른 컨테이너를 가질 수

당신은 포트 80에서 실행중인 웹 서버와 네트워크에있는 두 개의 서로 다른 기계가 할 수있는 것처럼, 갈등이 없다.

: 네트워크 네임 스페이스에 대한 자세한 읽기