2017-02-01 2 views
2

나는 정적 외부 IP를 가진 클라우드 PC를 가지고있다. 162.243.100.100 내부는 내가 Nginx에와 고정 표시기를 설치, 내가 호스트 컴퓨터에서 curl 162.243.100.100에서의 nginx 데모 페이지에 액세스 할 수있어이컨테이너 내부의 도커 포트 매핑을 따른다.

docker run -it -p 80:80 nginx 

같은 80 포트를 매핑.
컨테이너 내부에서 curl localhost에있는 nginx 데모 페이지에 액세스 할 수 있습니다.

하지만 nginxx containeer 내부에서 명령 curl 162.243.100.100에서 ngninx 데모 페이지에 액세스 할 수있게하려고합니다.
포트 매핑을 따르지 않는 것으로 보이며 시간 초과 오류가 발생합니다.
나는 네트워크 설정으로 무언가를 할 필요가 있지만 무엇을 모르는가.

+0

왜 컨테이너 내부의 IP 주소에서 액세스하고 싶습니까? localhost의 문제점은 무엇입니까? – mkasberg

+0

'162.243.100.100'은 컨테이너가 아닌'호스트'의 IP 주소입니다. 컨테이너는 같거나 다른 네트워크에있는 다른 머신과 같습니다. 그게 정말로 필요한거야? 문맥에 어긋나지 않습니다. –

답변

1

짧은 대답은

Docker의 기본 iptables 규칙과 라우팅 테이블은 컨테이너에서 호스트로 트래픽을 라우팅하고 docker-proxy를 통해 컨테이너로 다시 라우팅하도록 설정되지 않습니다. 이것이 얼마나 안티 패턴인지를 고려해 볼 때, 나는이 행동을 바꾸는 것을 우선시하지 않을 것이라고 생각합니다. 도구로 작업하고 도커 네트워크와 컨테이너 이름을 사용하는 것이 컨테이너에서 컨테이너로 전달할 때 훨씬 쉽습니다.

1

network를 작성하고 해당 네트워크에 컨테이너를 시작합니다. "그렇게하지 않는다"

docker network create --subnet 172.16.0.0/16 dockernet 

docker run -it -p 80:80 --net=dockernet nginx 
관련 문제