Docker 컨테이너에서 다음과 같이 시작된 오징어 에이전트를 실행하고 있습니다.
docker run --privileged -d --publish=3128:3128 --name foo squid
이름이 다른 컨테이너에서 정보를 얻고 싶습니다 bar
.
docker run --rm -it --name bar ubuntu:trusty bash
bar
컨테이너에서 실행하는 경우 :
nc 172.17.0.1 3128
HEAD /
그런 다음 서버에서 일부 출력을 얻습니다. 하지만 이것을 실행하면:
echo 'HEAD /' | nc 172.17.0.1 3128
나는 아무것도 얻지 못했습니다. 왜 안 돼?
답변1
아마도 표준 입력에서 파일 끝을 수신한 직후 netcat이 종료되었기 때문일 것입니다. 노력하다
(echo 'HEAD /'; sleep 5) | nc 172.17.0.1 3128
netcat의 로컬 입력을 네트워크 데이터를 읽고 표준 출력에 쓸 수 있을 만큼 오랫동안 열어 두십시오. 5
지연되는 시간(초)입니다 .
Netcat에는 이 문제를 해결할 수 있는 옵션이 있습니다. 음수 종료 시간 초과를 지정하면 stdin에서 EOF 후에 종료되는 대신 네트워크 연결이 닫힐 때까지 기다립니다.
echo 'HEAD /' | nc -q -1 172.17.0.1 3128