일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- kotlin coroutine
- 정보처리기사 실기
- minikube
- 정보처리기사 실기 기출문제
- 티스토리챌린지
- aws
- IntelliJ
- Pinpoint
- 공부
- AWS EKS
- 오블완
- kotlin
- Java
- Kubernetes
- 코틀린 코루틴의 정석
- CKA
- Spring
- kotlin querydsl
- AI
- CloudWatch
- Linux
- MySQL
- 정보처리기사실기 기출문제
- 기록으로 실력을 쌓자
- CKA 기출문제
- APM
- Elasticsearch
- mysql 튜닝
- kotlin spring
- PETERICA
- Today
- Total
피터의 개발이야기
[Docker] MacOS에서 Docker 로그 파일 위치 찾기 본문
ㅁ 들어가며
Docker를 사용하다 보면 컨테이너의 로그를 확인해야 할 때가 있다. 일반적으로 Linux 환경에서는 /var/lib/docker/containers/ 경로에서 로그 파일을 찾을 수 있지만, MacOS에서는 상황이 조금 다르다. 이 글에서는 MacOS의 Docker 로그 저장 위치에 대해서 공부한 내용을 정리하였다.
ㅁ MacOS의 Docker 로그 저장 위치
MacOS에서 Docker는 LinuxKit 위에서 동작한다. 이로 인해 로그 파일의 실제 위치는 LinuxKit VM 안에 존재한다.
그래서 Docker 로그 파일을 찾기 위해서 LinuxKit VM에 접속하여 VM 내부에서 로그 파일들을 확인한다.
ㅁ LinuxKit VM에 접속하기
ㅇ Git의 BretFisher/docker-for-mac.md에는 3가지 방식을 제시하고 있다.
1. debug-shell.sock, use netcat
nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
ㅇ MacOS에서 LinuxKit VM에 접속하려면 이 명령어를 실행하면 Docker가 사용하는 LinuxKit VM의 셸에 접속할 수 있다고 하였다.
ㅇ 하지만 나의 경우 해당 위치에 debug-shell.sock이 존재하지 않았다.
2. 권한이 있는 컨테이너에서 nsenter 사용
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh
ㅇ (데비안 이미지를 사용하여) 컨테이너를 실행하고 있다.
ㅇ pid=host(Docker4Mac을 실행하는 미니 VM의 프로세스 공간에 있음)로 설정되어 있고, nsenter는 pid 1이 무엇이든, 그것을 컨텍스트로 사용하고, 해당 네임스페이스를 모두 입력하고, 거기에서 셸을 실행하게 한다.
3. 미리 빌드된 이미지에서 nsenter를 실행
docker run -it --rm --privileged --pid=host justincormack/nsenter1
ㅇ 저장된 로그를 확인할 수 있다.
ㅁ 로그 파일 찾기
/var/lib/docker/containers/<container_id>/<container_id>-json.log
ㅇ VM에 접속한 후, 로그 파일은 다음 경로에서 컨테이너의 ID 기준으로 찾을 수 있다.
ㅁ 컨테이터 ID 기준 LogPath
# ContanerID 찾기
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dc2c0e439b65 ubuntu:20.04 "/bin/bash" 14 hours ago Up 14 hours ubuntu_20_04
# LogPath 찾기
$ docker inspect dc2c0e439b65 -f "{{.LogPath}}"
/var/lib/docker/containers/dc2c0e439b65~생략~03/dc2c0e439b65~생략~03-json.log
ㅁ 마무리
MacOS에서 Docker 로그 파일을 찾는 과정은 Linux 환경과 다소 차이가 있다. LinuxKit VM을 통해 간접적으로 접근해야 하므로, 조금 더 복잡한 과정이 필요하였다. 하지만 이 방법을 통해 MacOS에서도 Docker 컨테이너의 로그 파일에 접근하고 분석할 수 있다.
ㅁ 함께 보면 좋은 사이트
ㅇ [Docker] docker logs 데이터는 어디에 저장될까 ? (MacOS)
ㅇ Git의 BretFisher/docker-for-mac.md
'DevOps > Docker' 카테고리의 다른 글
[Docker] linux/ffmpeg을 이용한 무배포, ffmpeg 테스트 방법 (0) | 2025.01.08 |
---|---|
[Docker] Docker Run 명령어 정리 (1) | 2025.01.07 |
Trivy: 컨테이너 이미지 취약점 스캐너 사용법 (1) | 2025.01.04 |
[Docker] Distroless 이미지란? (0) | 2025.01.04 |
[Docker] 멀티 플랫폼, --platform 옵션 사용법 (1) | 2025.01.03 |