도커 기초 · 로그와 디버깅 · 퀴즈
퀴즈: 로그와 디버깅
문항 5개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
컨테이너가 재시작을 반복하는데 `docker logs` 가 완전히 비어 있습니다. 가장 먼저 확인할 것은?
- 이미지를 처음부터 다시 빌드한다
- 종료코드와 State.OOMKilled 를 확인한다
- 컨테이너 네트워크 설정을 확인한다
- 도커 로그 드라이버를 바꿔 본다
앱이 로그를 `/var/log/app.log` 파일에만 쓰도록 설정돼 있습니다. 컨테이너에서 이것이 문제인 이유는?
- 로그 파일 권한이 맞지 않기 때문
- 컨테이너 디스크가 금방 부족해져서
- 컨테이너 안에서는 로그 로테이션이 안 돼서
- 로그 수집·조회 도구가 전부 표준 출력을 전제로 하므로 파이프라인 전체가 무력해진다
distroless 이미지에서 `docker exec -it app sh` 가 실패합니다. 가장 적절한 대응은?
- 이미지에 셸 바이너리를 추가해 다시 빌드한다
- 도구가 든 컨테이너를 같은 네임스페이스에 붙여 들여다본다
- 컨테이너를 특권 모드로 다시 띄운다
- 로그 드라이버를 바꾼다
`docker logs` 로 본 출력에서 표준 출력과 표준 오류를 분리하려면?
- 도커에서는 분리할 방법이 없다
- --details 옵션을 쓴다
- docker logs 자체의 두 스트림을 셸 리다이렉션으로 나눈다
- docker inspect 로 나눠 읽는다
`State.Error` 필드에 값이 들어 있고 로그는 비어 있습니다. 무엇을 뜻합니까?
- 앱이 실행 중 에러를 냈다
- 컨테이너 네트워크가 끊겼다
- 런타임이 컨테이너 프로세스를 아예 시작하지 못했다
- 내려받은 이미지가 손상됐다