--net=host가 docker run 명령에 언급되면 Docker 컨테이너는 포트를 노출하지 않습니다.

--net=host가 docker run 명령에 언급되면 Docker 컨테이너는 포트를 노출하지 않습니다.

CentOS 도커 호스트에 CentOS 도커 컨테이너가 있습니다. 이 명령을 사용하여 도커 이미지를 실행하면

docker run -d --net=host -p 8777:8777 ceilometer:1.x

Docker 컨테이너는 호스트의 IP를 가져오지만 호스트에 할당된 포트는 없습니다. "--net=host" 없이 동일한 명령을 실행하는 경우:

docker run -d -p 8777:8777 ceilometer:1.x

docker는 포트를 노출하지만 IP는 다릅니다. 도커 버전은 1.10.1입니다. 도커 컨테이너가 포트를 노출하는 호스트와 동일한 IP를 갖기를 원합니다. 기사에서도 언급했는데도커파일지침노출 8777하지만 "--net=host"에 언급하면 ​​작동하지 않습니다.터미널 실행주문하다.

답변1

--net=host컨테이너를 사용하는 경우호스트의 네트워크 스택이 공유되고 호스트의 모든 인터페이스를 컨테이너에서 사용할 수 있습니다., (docker의 실행 참조에 따르면)

이미 모든 것을 공유했다면 8777을 8777에 명시적으로 매핑할 필요가 없습니다. 실제로 매핑을 구현하는 것은 이상할 것입니다. 1234를 8777로 매핑하면 호스트도 8777을 수신하게 될까요? 이것이 할당된 포트가 표시되지 않는 이유입니다.

그냥 무시 --net=host하고 호스트의 8777에 연결을 시도하면 컨테이너의 8777에 연결됩니다. 컨테이너가 사용하는 실제 IP 주소를 모르는지 확인하세요. 외부 세계에서는 호스트 IP만 볼 수 있습니다.

관련 정보