Docker는 호스트에만 포트를 노출합니다.


100

Docker는 외부가 아닌 호스트에만 포트를 노출 할 수 있습니다.

mongo 데이터베이스로 실행되는 도커를 배치해야하고 호스트에서만 액세스 할 수 있기를 원했지만 호스트 포트 27017을 연결해야합니다.

이것이 가능합니까? 아니면 가능한 유일한 방법은 방화벽 정의를 변경하는 것입니까?

답변:


142

물론, localhost다음과 같이에 바인딩하십시오 .

도커 실행 -p 127.0.0.1:27017:27017

또한 호스트는 일반적으로 IP를 통해 각 컨테이너와 통신 할 수 있습니다. 사용은 docker inspect $ID네트워크 IP를 포함하는 (다른 것들 옆)을 JSON 덤프를 얻을 수 있습니다.


4
따라서 [1] docker run -p 27017 : 27017 -v / var / lib / mongodb / master : / data mongo : storage_test / usr / bin / start-mongo [2] docker run -p 127.0.0.1 : 27017 : 27017 ...?
루벤

17
두 번째 옵션은 localhost에 바인딩됩니다. 첫 번째는 포트를 공개적으로 사용할 수 있도록합니다. 정적 포트를 원하지 않는 경우 127.0.0.1::27017.
ZeissS

3
이 솔루션은 swarm 모드에서 작동 하지 않는같습니다.이 github 문제
bsimpson53

1
동등한 docker-compose는 간단 service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }합니까?
Groostav

1
내 docker-compose의 문제는 localhost에만 바인딩되지만 공개적으로 액세스 할 수 있습니다. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.