분리된 Docker 컨테이너에 Python 인쇄 출력이 표시되지 않는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-23 04:32:20
원래의
813명이 탐색했습니다.

Why Doesn't My Detached Docker Container Show Python Print Output?

분리된 Docker 컨테이너 및 Python 앱의 출력 인쇄

분리된 Docker 컨테이너에서 Python(2.7) 애플리케이션을 실행할 때(-d 플래그 사용) 사용자에게 다음과 같은 문제가 발생할 수 있습니다. 애플리케이션의 인쇄 문이 어떤 출력도 생성하지 않는 상황.

Python 출력 이해 버퍼링

Python은 기본적으로 버퍼링된 출력을 사용합니다. 즉, 출력을 화면으로 보내기 전에 버퍼에 저장합니다. 분리된 컨테이너에서는 이 버퍼가 충분히 자주 플러시되지 않아 출력이 없을 수 있습니다.

버퍼되지 않은 출력 사용

이 문제를 해결하려면 -u와 함께 버퍼되지 않은 출력을 사용할 수 있습니다. 플래그:

CMD ["python", "-u", "main.py"]
로그인 후 복사

이렇게 하면 버퍼링에 관계없이 출력이 즉시 화면에 기록됩니다. settings.

Docker 로그 상관 관계

버퍼링되지 않은 출력을 사용하면 인쇄 문이 Docker 로그에 표시됩니다.

docker logs myapp
> App started
로그인 후 복사

"-u"가 없는 분리된 컨테이너 동작

-u 플래그를 사용하지 않으면 분리된 환경에서 인쇄가 다음과 같이 동작합니다. 컨테이너:

  • 출력은 버퍼에 저장됩니다.
  • 버퍼가 가득 차면 화면으로 플러시됩니다.
  • 버퍼보다 먼저 컨테이너가 종료되는 경우 가득 차면 출력이 손실됩니다.

디버깅 중 팁

  • python -u 플래그 사용: Docker 외부에서 버퍼링되지 않은 출력으로 애플리케이션을 테스트하여 문제가 컨테이너에만 해당되는지 확인하세요.
  • 확인 docker 로그: -u 플래그가 없어도 Docker 로그에 출력이 표시되어야 합니다. 지연됩니다.
  • 컨테이너에 연결: docker 연결을 사용하여 컨테이너에 연결하면 분리하기 전에 버퍼가 플러시될 만큼 작은 경우 출력이 표시될 수 있습니다.

위 내용은 분리된 Docker 컨테이너에 Python 인쇄 출력이 표시되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿