원격으로 실행되는 명령으로 Docker 컨테이너에서 실시간 stdout 가져오기

원격으로 실행되는 명령으로 Docker 컨테이너에서 실시간 stdout 가져오기

나는 그것을 얻으려고 노력하고있다실시간 표준 출력도커 컨테이너에서 실행 중인 명령에서. 그러나 다른 호스트에서 실행되는 원격 명령으로 이 작업을 수행해야 합니다.

Docker 호스트에 있을 때 docker 명령을 실행하여 -it필요한 실시간 출력을 얻을 수 있습니다. 하지만 저는 이런 제약이 있습니다.가지다이전 솔루션을 쓸모 없게 만드는 명령을 원격으로 실행합니다. -t터미널이 전혀 없어서 원격 명령으로는 존재하지 않는 $TERM 기반의 의사 터미널을 실행하기 때문에 사용할 수 없습니다 .

-d또한 백그라운드에서 실행하기 위해 docker 명령을 실행해 보았지만 docker logs -f <container>프로세스가 끝날 때 출력이 여전히 한꺼번에 제공됩니다.

어떤 해결책이나 조언이라도 감사히 여기고 이것이 다른 스택에 속한다면 수정해 주십시오.

답변1

Docker의 github에 대한 도움말을 통해 이를 알아냈습니다. 컨테이너에서 Python 스크립트를 실행하려고 했다는 사실은 언급하지 못했지만 그것이 중요하다고 생각하지 않았습니다.

이것은 실제로 Docker 문제가 아니라 Python 문제였습니다. 나는 배웠다Docker는 이미 실시간으로 stdout을 제공합니다.. Python은 버퍼에 모든 stdout을 보유하고 있으며 스크립트가 완료될 때까지 플러시하지 않았습니다. 코드가 터미널에서 실행되는 경우를 제외하고 -t.

docker 명령에서 필요한 것은 python -u <script>Python이 stdout을 버퍼링하는 것을 방지하기 위해 스크립트를 호출하는 것뿐이었습니다.

답변2

Logprout와 함께 ELK 스택을 사용하면 모든 도커 컨테이너에서 실시간 로그를 얻을 수 있고 로그 및 기타 많은 멋진 항목을 검색할 수 있습니다.

관련 정보