2014-12-21 5 views
1

저는 장고 앱을 개발 중이며 모든 개발자를 도커 컨테이너로 옮기기로 결정했습니다. 나는 작은 문제가있다 : 기본적으로, 나는 3 개의 컨테이너가있다 : - app (장고 코드를 가지고있다) - 데이터베이스를 보유하고있는 postgres - web (포트 80에서 8000으로 들어오는 요청을 전달하는 nginx 어떤이 내 문제는 내가 "응용 프로그램"컨테이너 외부에서 내 웹 사이트에 액세스 할 수 있다는 것입니다 장고가 사용하는 포트)입니다, 내 nginx를 로그 말 :IP 주소로 도커 컨테이너에 액세스 할 수 없습니다.

2014/12/21 22:22:35 [error] 9#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.59.3, server: _, request: "GET/HTTP/1.1", upstream: "http://172.17.0.62:8000/", host: "192.168.59.103" 

그래서 분명히,의 nginx는 "응용 프로그램 때문에 CONNEXIONS를 전달할 수 없습니다 "컨테이너 (192.168.59.103)는 연결을 수신 대기하지 않습니다. 하지만 그게 사실이 아니에요, 왜냐하면 내가 애플 리케이션 컨테이너에 연결하고 컬 요청을하려고했는데 : - 내가 curl "localhost:8000"을하면 작동한다. (나는 장고 시작 페이지를 얻는다. - 내가한다면 curl "http://172.17.0.62:8000/" 작동하지 않는다. 그래서, 내가 문제를 격리하고 "경로"명령 나를 보여줍니다 실행 관리 :

Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   172.17.42.1  0.0.0.0   UG 0  0  0 eth0 
172.17.0.0  *    255.255.0.0  U  0  0  0 eth0 

그들을, 나는 boot2docker의 SSH에 가서 입력 "경로"와이 나온 것입니다 :

Destination  Gateway   Genmask   Flags Metric Ref Use Iface 
default   10.0.2.2  0.0.0.0   UG 1  0  0 eth0 
10.0.2.0  *    255.255.255.0 U  0  0  0 eth0 
127.0.0.1  *    255.255.255.255 UH 0  0  0 lo 
172.17.0.0  *    255.255.0.0  U  0  0  0 docker0 
192.168.59.0 *    255.255.255.0 U  0  0  0 eth1 

분명히 나는 ​​컨테이너에 대한 좋은 경로가 없지만, 내가 그 configs를 건드리지 않았기 때문에 이상했다. 아무도 단서가 있습니까?

+0

도커 실행 명령이 모든 컨테이너에 대해 어떻게 표시됩니까? –

답변

-1

몇 가지 의견 : 당신은 단지에의 nginx를 사용하는 경우

(요청 장고에서 사용하는 포트 인 8000 포트 80에서 들어오는 전달의 nginx가)

웹 앞으로 80에서 8080까지 - 중간 컨테이너없이 동일한 효과를 갖는 -p 80 : 8080을 사용하여 앱 컨테이너를 실행하는 것이 좋습니다.

nginx에서 앱 컨테이너와 대화 할 수있게하려면 nookx 용 도커 실행시 --link APP_CONTAINER:ALIAS 스위치를 사용하여 앱 컨테이너를 nginx 컨테이너에 연결해야합니다. 그런 다음 ALIAS가 매핑 된 IP에 대한 nginx 컨테이너 안의/etc/hosts를 볼 수 있습니다. 각 도커 컨테이너는 도커 브리지에서 자체 IP를 가져오고 통신이 가능하도록 연결해야합니다.

도커 간 컨테이너 통신은 iptables를 사용하여 관리됩니다. iptables -L을 실행하여 구성된 라우트를 살펴보십시오. 당신은 아마 수동으로 이것을 어지럽히 지 말아야합니다. 연결 컨테이너는 일반적으로 이러한 것들을 상당히 잘 관리합니다.

+1

배포 목적으로도 nginix를 사용하고 있습니다. 포트를 간단히 매핑 할 수 있다는 것을 알고 있지만, 회사를 위해이 방법을 사용해야합니다. 문제는 컨테이너 사이의 경로가 엉망입니다. 각 컨테이너는 자체 IP 주소를 알지 못합니다. 로컬 호스트에 ping을 실행하면 작동하지만 IP 주소로 핑 (ping)하면 – user2435860

관련 문제