2017-11-23 21 views
1

에 서버에 고정 표시기 응용 프로그램을 노출 할 수 없습니다. 그러나, 내 컴퓨터와 컨테이너의 포트를 올바르게 바인딩 할 수없는 것 같습니다.내가 고정 표시기 컨테이너를 사용하여 내 서버에 <a href="https://github.com/LINCnil/pia" rel="nofollow noreferrer">this CNIL/PIA</a> 응용 프로그램을 사용할 수 있도록하기 위해 노력하고있어 외부 IP

내 Dockerfile은 내가 사용하는 컨테이너를 시작

from node 

maintainer Théophile Dano <[email protected]> 

run mkdir -p /app 
run chown node:node /app 

workdir /app 

copy . /app 

user node 

expose 4200 

run npm i 

cmd ["./node_modules/.bin/ng", "server"] 

그리고 명령입니다 : 내 IP 테이블에서

docker run -i -t -P MY_SERVER_IP::4200 cnil-pia 

내가 가진 (sudo iptables -t nat -L -n) : 그러나

Chain DOCKER (2 references) 
target  prot opt source    destination   
RETURN  all -- 0.0.0.0/0   0.0.0.0/0   
DNAT  tcp -- 0.0.0.0/0   MY_SERVER_IP  tcp dpt:32768 to:172.17.0.2:4200 

내 브라우저에서 MY_SERVER_IP : 4200에 액세스하려고하면 앱을 사용할 수 없습니다.

내가 잘못 뭐하는 거지에 어떤 통찰력? 또는 전혀하지 않습니까?

-P는 --publish 모두 당신은 어떤 -p를 사용할 필요가 임의의 포트

에 노출 된 포트를 게시 :

+0

는 4200 -p - 그것은'고정 표시기 실행이 일을합니까? – yamenk

+0

아니요 :/ –

+1

Windows 또는 가상 머신에서 실행 중입니까 – Sohan

답변

1

당신은 의미 당신의 docker run 문에 -P 키를 사용 :

-p --publish list 호스트의 포트 (기본값 []) 게시

또한 당신은뿐만 아니라 호스트의 포트를 지정해야합니다.

그래서, 결국은 다음과 같습니다

docker run -it -p MY_SERVER_IP:4200:4200 cnil-pia 

추신 그리고 어쩌면 당신은 백그라운드에서 컨테이너를 실행해야합니다, 그래서는 다음과 같습니다

docker run -d -p MY_SERVER_IP:4200:4200 cnil-pia 
+0

설명서에'IP :! : port'는'IP : host_port : container_port'와 같습니다. 이것은 게시하기 전에 사용한 명령입니다. –

+0

예, key는 대문자가 아니며 -p이어야합니다. https://docs.docker.com/engine/userguide/networking/ default_network/웰/ – Nickolay

+0

바인딩, 여전히 작동하지 않습니다. –

0

몇 가지 조사를 한 후, 그 고정 표시기는 127.0.0.1 (일명 localhost) 포트 오히려 0.0.0.0 사람들을 노출하지 않습니다 보인다. 후자에 Angular 서브를 사용하면 모든 것이 작동하게되었습니다! 4200 CNIL-pia` :

ng serve --host 0.0.0.0