← 전체 글로 돌아가기

Docker

Docker 컨테이너 로그로 시작하기

컨테이너에서 문제가 나면 로그를 체계적으로 확인하는 방법.

Docker 배포는 로컬 개발과 전혀 다른 환경이다. 같은 코드가 로컬에서는 잘 돌아도 컨테이너에서는 예상 밖의 문제를 만난다. 대부분 로그를 통해 원인을 찾을 수 있다.

가장 먼저: 컨테이너가 실행 중인가

문제를 보기 전에 컨테이너 상태를 확인한다.

# 실행 중인 컨테이너 목록
docker ps
# 최근 로그 확인
docker logs --tail=100 service-name
# 컨테이너의 상세 정보
docker inspect service-name

로그에서 무엇을 볼 것인가

컨테이너 시작 시 에러가 나면 보통 환경변수가 없거나, 필요한 파일이 빠졌거나, 포트가 이미 사용 중일 때다. 로그의 마지막 부분부터 역으로 읽으면서 에러 메시지를 찾는다.

환경변수가 제대로 전달되었는가

컨테이너 실행 명령에 환경변수를 전달했는지, 또는 .env 파일에 설정했는지 확인한다. 컨테이너 내부에서 환경변수를 확인할 수 있다.

이미지 태그와 버전 확인

배포한 이미지 태그가 맞는지 확인한다. latest 태그를 쓸 때는 의도치 않게 다른 버전을 배포할 수 있다. 구체적인 버전 태그를 사용하고, 실제로 배포된 이미지가 맞는지 확인한다.

# 실행 중인 컨테이너의 이미지 확인
docker ps --format "table {{.Names}}\t{{.Image}}"
# 컨테이너 실행 시 사용된 명령 확인
docker ps --format "table {{.Names}}\t{{.Command}}"

로컬과 배포 환경의 차이

로컬에서 잘 돌아도 배포 서버의 다른 환경에서는 문제가 생길 수 있다. 데이터, 네트워크, 디스크 용량, 포트 바인딩 등이 다를 수 있다. 배포 후에도 정상적으로 실행되는지 몇 분간 로그를 모니터링한다.

로그 모니터링

# 실시간 로그 확인
docker logs -f service-name
# 특정 시간 이후의 로그
docker logs --since 30s service-name

이렇게 로그 확인이 익숙해지면 컨테이너 문제를 빠르게 진단할 수 있다. 특히 여러 컨테이너가 함께 실행될 때는 로그 확인 순서가 가장 효율적이다.