2016-10-21 4 views
0

최근에 Mac에서 Docker native를 설치했으며 docker-machine에서 전환했습니다. 사육사가있는 컨테이너가있어서 2181에 포트가 열립니다. 그러나이 프로세스에는 10 ~ 15 초가 걸릴 수 있습니다.Docker on Mac : 컨테이너의 수신 대기 포트를 테스트하는 방법

이 이전에 고정 표시기 기계와 내가 netcat을을 사용하여 포트에서 수신 사육사가 시작했다 여부를 확인하는 데 사용 : 사육사가 바로 당신이 일을 끝낼로하고 시작하는 동안

nc -z 192.168.99.100 2181 

netcat을이 0이 아닌 종료 코드를 반환 연결은 성공하고 netcat은 0을 반환합니다.

그러나 Docker Mac-native에서는 컨테이너가있을 때 항상 연결이 성공하지만 사육사가 시작될 때 즉시 연결이 끊어집니다. 사육사는 준비가되면 연결을 유지합니다. Netcat은이 차이를 보지 않으며 "nc -z"는 항상 0을 반환합니다.

제 궁금한 점은 : 사육사가 실제로 포트에서 수신을 시작했는지 여부를 컨테이너 외부에서 쉽게 확인할 수 있습니까?

답변

0

수표를 수동으로 확인하고 싶다면 텔넷을 사용할 수 있습니다.

명령 :

telnet localhost 80 

출력 :

Trying ::1... 
Connected to localhost. 
Escape character is '^]'. 

이 연결이 성공했음을 의미한다. 명령 사용 :

telnet <address> <port> 

TCP 포트에만 텔넷을 사용할 수 있습니다.

또 다른 방법은 docker exec와 함께 컨테이너에서 서비스를 확인하는 것입니다 :

docker exec <container name> "echo stat | nc <zookeeper ip> 2181" 
docker exec <container name> "bash path/to/zkServer.sh status" 
+0

텔넷 여기 netcat을 동일하게 작동합니다. 또한 유효한 연결을 얻지 만 연결이 설정되면 바로 Zookeeper가 듣지 않기 때문에 도커가이 연결을 끊습니다. 사육사가 시작되면, 연결은 확립 후에도 열려 있습니다. –

+0

업데이트 된 답변을 확인하십시오. –