2014-12-12 3 views
0

Docker 호스트의 스크립트를 Docker 컨테이너의 스크립트에 연결하려고합니다.Docker 컨테이너 연결 문제

스크립트는 Python의 원격 대기열 관리자를 사용하며 Docker 외부에서 완벽하게 작동하므로 Docker 구성 또는 Docker 포트 전달에 대한 이해가 문제입니다.

컨테이너의 스크립트가 (localhost, 5800)에 올바르게 바인딩되고 스크립트가 다운되지 않는지 확인했습니다.

포트 5800에서 컨테이너의 IP 주소에 연결하는 스크립트를 가져 오려고 시도했지만 작동하지 않습니다 (Connection refused). 나는 또한 -p 플래그를 사용하여 무작위 포트로 5800을 전달한 다음 Docker 호스트에서 (localhost, randomport)에 연결했으나 작동하지 않는다 (Connection refused).

다시 말하지만, 컨테이너에 셸을 가져 와서 스크립트를 수동으로 시작하여 서버를 성공적으로 시작하고 종료하지 않도록 할 때도 문제가 발생하기 때문에 다시 스크립트가 올바르게 실행됩니다.

내게 이것은 Docker 컨테이너 내에서 웹 서버를 실행하는 것과 똑같은 문제인 것처럼 보입니다. 왜 이것이 작동하지 않습니까? 스크립트는 Docker 외부에서 작동합니다.

https://github.com/hashme/thistle/tree/flask_thistle 

(호스트 스크립트 용기 스크립트와 app.py에 대한 room.py를보고, 나는 정확히 스크립트를 실행하지만, REPL에서 멀리 해킹 아니에요, 그래서 나는 성공없이 많은 매개 변수를 조정 한)

문제를 복제하려면 먼저 ./container.sh를 실행 한 다음 REPL에서 가져 오기 응용 프로그램을 실행하고 IP 주소와 포트 번호가있는 MessagePasser를 만듭니다. app.py 스크립트를 실행해도 아무런 효과가 없습니다.

답변

1

컨테이너에 스크립트 (로컬 호스트, 5800)에 제대로 결합

당신은 컨테이너 내에서 스크립트가 "0.0.0.0"(모든 인터페이스) 주소에 바인딩 있는지 확인해야

, localhost가 아님 (루프백). 그렇지 않으면 외부 연결을 허용 할 수 없습니다.

+0

아! 그게 내 첫번째 실수 야. 그게 문제를 해결하는지 봅시다. – Shariq

+0

그게 내 문제를 완전히 해결하지 못했습니다. 나는 Docker 호스트에서 연결하려고 할 때 ('0.0.0.0', 5800) 올바르게 바인딩 된 스크립트로 "Connection refused"를 얻고 있습니다. IP와 localhost를 올바른 포트로 지정하십시오. 다른 아이디어? – Shariq

+0

다음으로 해당 포트를 노출시키고 공개하는지 확인하십시오. stackoverflow를 통한 이러한 종류의 원격 문제 해결은 지루합니다. 당신은 20 가지를 정확하게해야합니다. 그렇지 않으면 전혀 작동하지 않습니다. 우리는 원격으로 물건을 확인하기 위해 시스템에 접근 할 수 없으므로 stackoverflow에서 제대로 작동하지 않습니다. –

관련 문제