← 전체 글로 돌아가기

Docker

Docker 컨테이너가 자꾸 문제를 일으킬 때

컨테이너 상태를 빠르게 파악하고, 문제의 범위를 좁혀 나가는 실전 방법을 정리했다.

컨테이너 문제는 로그도 많고, 설정도 많아서 뭘 먼저 봐야 할지 헷갈리기 쉽다. 하지만 체계적으로 접근하면 원인을 빠르게 찾을 수 있다.

가장 중요한 건 확인한 값과 바꾼 값을 따로 남기는 것이다. 혼자 개발할수록 이 기록이 중요하다. 같은 문제가 나중에 다시 생기면 기록이 있으면 훨씬 빠르게 처리할 수 있기 때문이다.

컨테이너 상태 빠르게 파악하기

먼저 컨테이너가 실행 중인지, 환경변수는 제대로 설정됐는지 확인한다.

docker ps
docker logs --tail=100 service-name
docker inspect service-name

이 세 명령으로 대부분의 상황을 파악할 수 있다. 컨테이너가 실행 중인지, 최근 로그에 에러가 있는지, 환경변수는 어떻게 설정되어 있는지 한눈에 보인다.

환경변수가 애매하면 다른 건 다 무의미

환경변수 하나가 잘못되면 아무리 다른 설정을 고쳐도 결과가 바뀌지 않는다. 특히 데이터베이스 연결이나 API 토큰 같은 값이 잘못되면 서비스 전체가 안 된다.

docker inspect service-name | grep -A 50 "Env"

필요한 환경변수가 모두 설정되어 있는지, 값이 맞는지 직접 확인해야 한다.

로컬과 운영의 차이를 기록해두기

로컬에서는 되는데 운영에서 안 되는 경우가 자주 있다. 이런 경우 환경 차이까지 같이 적어두면 원인 추적이 쉬워진다.

  • 로컬 이미지와 운영 이미지의 버전
  • 포트 매핑 설정
  • 마운트된 볼륨이 맞는지
  • 의존성 서비스 (데이터베이스, 레디스 등) 상태

작은 수정 후 확인하는 방법

한 번에 여러 설정을 바꾸면 어디가 문제인지 알 수 없다. 항상 한 가지만 수정하고 결과를 확인한다.

  1. 문제 상황이 정말 재현되는지 확인
  2. 로그에서 구체적으로 뭐가 바뀌었는지 한 줄로 정리
  3. 실제 서비스에서 정상 동작하는지 최종 확인

이 과정을 기록으로 남겨두면, 다음에 비슷한 증상이 나올 때 훨씬 빠르게 처리할 수 있다.