2014-10-17 2 views
0

를 사용하여 컨테이너 포트에 호스트에 바인드 특정 포트를 할 수있는 방법이고정 표시기 파일

내가 고정 표시기 파일 단계에서 항목을 다음과 같은 한 고정 표시기 파일을 사용하여 컨테이너 포트에 호스트의 특정 포트를 결합 할 수있는 방법이 1 : EXPOSE 8090 : 8080

도커를 실행하면 컨테이너가 도커 파일에 설명 된대로 8090 대신 포트 8080에 바인딩됩니다.

내가 어떻게 도커 파일을 사용하여이를 달성 할 수 있는지 또는이를 달성하기위한 더 좋은 방법이 있는지 생각해보십시오.

답변

1

docker가 설명한대로 EXPOSE 기능을 구현하고 있는지 확인할 수 없습니다. documentation에서

:

EXPOSE <port> [<port>...] 

EXPOSE 지침에 노출 컨테이너는 런타임에 지정된 네트워크 포트에서 수신 것으로 도커를 알려줍니다. Docker는이 정보를 사용하여 링크를 사용하여 컨테이너를 상호 연결합니다 (Docker User Guide 참조).

EXPOSEvagrant forwarded_port 기능과 동일하지 않습니다.

컨테이너를 연결해야 할 때 유용합니다.

컨테이너에서 호스트로 포트를 전달해야하는 경우 -p 플래그를 사용하십시오.
예 :

docker run -it -p 80:80 5959f94a4d10 /bin/bash 
+0

감사합니다. 나는 그것이 합리적이라고 생각합니다. 포트 포워딩은 컨테이너의 기능이 아니라 호스트가 커스터마이징하는 방법의 인공물입니다. 이것이 DockerFile이이 구성을 가지고 있지 않은 이유 일 것입니다. – Kiran

0

Dockerfile휴대용 구성을 포함하도록 설계된 고정 표시기 파일을

번호를 사용하여 용기 포트 호스트 특정 포트를 결합 할 수있는 방법이있다. 호스트 포트는 모든 시스템에서 사용할 수 없기 때문에 이식 할 수 없습니다. 이러한 구성 플래그는 런타임에 사용할 수 있지만 Dockerfile 구문 (및 결과 Docker 이미지)에는 포함되어 있지 않습니다.

호스트 포트 및 기타 휴대용이 아닌 구성 (예 : 볼륨 마운트)은 컨테이너의 HostConfig 구조의 일부입니다. 이들은 컨테이너 런타임에서만 사용할 수 있습니다.