도커 이미지의 로그를 보는 방법은 무엇입니까?
도커 세계에서는 도커 컨테이너(실행 중인 이미지)에 대한 로그를 쉽게 볼 수 있습니다.그러나 이미지를 생성하는 동안 일반적으로 여러 명령을 실행합니다.예를 들어 노드 프로젝트의 npm 설치 명령입니다.이러한 명령에 대한 로그도 확인하는 것이 좋습니다.설명서에서 빠르게 검색했지만 도커 이미지에 대한 로그를 얻을 수 있는 방법을 찾지 못했습니다.가능합니까?
같은 문제를 가지고, 나는 그것을 사용하여 해결했습니다.
docker build --no-cache --progress=plain -t my-image .
업데이트 : 이 질문이 나왔기 때문에 빌드킷의 출력 변화를 보고 모두가 찾고 있는 것 같습니다.빌드킷에는 다음 옵션이 포함됩니다.docker build --help
모두 보기):
--build-arg list Set build-time variables
--cache-from strings Images to consider as cache sources
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--no-cache Do not use cache when building the image
-o, --output stringArray Output destination (format: type=local,dest=path)
--platform string Set platform if server is multi-platform capable
--progress string Set type of progress output (auto, plain, tty). Use plain to show container output (default "auto")
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
-t, --tag list Name and optionally a tag in the 'name:tag' format
--target string Set the target build stage to build.
많은 사람들이 빌드킷과 함께 원하는 옵션은--progress=plain
:
docker build -t my-image --progress=plain .
이전 빌드 출력을 보려면 환경 변수를 사용하여 빌드 키트를 사용하지 않도록 설정할 수 있지만, 사용하지 않는 빌드 단계, 동시 빌드 단계, 멀티 플랫폼 이미지 및 다음과 같은 기능에 대한 도커 파일의 새 구문을 건너뛸 수 있는 빌드 키트의 기능이 많기 때문에 이에 반대하는 것이 좋습니다.RUN --mount...
):
DOCKER_BUILDKIT=0 docker build -t my-image .
OP는 빌드 로그를 이미지 자체에 포함하도록 요청하고 있습니다.일반적으로 이러한 로그는 이미지 외부에 저장하는 것이 좋습니다.
그렇긴 하지만, 그것을 위한 가장 쉬운 방법은 사용하는 것입니다.tee
모든 명령 출력의 복사본을 로그 파일로 보냅니다.이미지에 첨부하려면 다음과 같은 방법으로 이미지 내부의 로그 파일에 실행 명령을 출력합니다.
RUN my-install-cmd | tee /logs/my-install-cmd.log
그런 다음 빠른 일회성 컨테이너를 실행하여 이러한 로그의 내용을 볼 수 있습니다.
docker run --rm my-image cat /logs/my-install-cmd.log
이미지에 로그를 첨부할 필요가 없는 경우 JHaris가 말하는 대로 빌드 명령을 변경하여 모든 빌드의 출력을 기록할 수 있습니다(실행 명령을 많이 변경하는 대신).
docker build -t my-image . | tee my-image.build.log
고전적인 도커 빌드 명령을 사용하여 사용하지 않고 빌드할 경우--rm=true
그러면 당신은 모든 중간 컨테이너를 가지고 있고, 그것들 각각은 당신이 검토할 수 있는 로그를 가지고 있습니다.
docker logs $container_id
그리고 마지막으로, 이미지에 층의 역사가 있다는 것을 잊지 마세요.각 명령어의 출력은 표시되지 않지만 출력을 기록하지 않는 모든 명령어에 유용하며, 특히 캐시가 많이 사용되는 경우 각 계층의 빌드를 파악하는 데 유용합니다.
docker history my-image
사하는대를 사용하는 에.--progress=plain
변수 환변를사수있다습니도용을 할 수도 있습니다.BUILDKIT_PROGRESS
다음과 같이 사용할 수 있습니다.
export BUILDKIT_PROGRESS=plain
docker build ....
참조: https://docs.docker.com/engine/reference/commandline/buildx_build/ #http:
사용 방법: https://github.com/jcalles/docker-wtee
설명서를 읽고 피드백을 주세요.
아니면...
실행 중인 컨테이너에서 로그를 가져와야 하고 컨테이너에 볼륨이 노출된 경우 다음을 실행합니다.
docker run --rm -it --name testlogs --link <CONTAINERNAME/ID> --network CONTAINERNETWORK -p PORT:8080 --volumes-from CONTAINERNAME/ID javiercalles/wtee sh
언급URL : https://stackoverflow.com/questions/37832575/how-to-view-logs-for-a-docker-image
'itsource' 카테고리의 다른 글
페이지에 표시되지 않고 HTML5 비디오 요소를 동적으로 만듭니다. (0) | 2023.07.31 |
---|---|
Matplotlib으로 음모를 꾸미는 것이 왜 그렇게 느립니까? (0) | 2023.07.31 |
자바스크립트를 시작할 때 세미콜론을 시작하는 목적은 무엇입니까? (0) | 2023.07.31 |
"display:none"이 이미지 로드를 방해합니까? (0) | 2023.07.31 |
NSA ray를 NSData로 변환하는 방법은 무엇입니까? (0) | 2023.07.31 |