Docker
Docker 이미지 태그 배포가 실패했을 때
Docker 배포에서 이미지 버전 문제를 진단하고 빠르게 수정하는 방법을 정리했습니다.
로컬에서 잘 동작하던 Docker 설정도 배포 환경에서는 다르게 보일 수 있다. 특히 이미지 태그와 버전이 기대와 다를 때가 자주 있다.
현재 실행 중인 이미지 확인
먼저 배포된 서버에서 실제로 어느 이미지가 실행 중인지 확인한다.
docker ps --format "{{.Image}} {{.Names}}"
docker images | grep service-name
예상한 태그(예: service-name:v1.2.3)가 실행 중인지, 아니면 다른 버전이 실행 중인지 확인한다.
이미지 메타데이터 확인
docker inspect service-name:latest | grep -E 'Created|RepoTags|ImageID'
이미지가 언제 빌드되었고, 실제 태그가 무엇인지 확인한다. docker inspect로 이미지의 생성 시간과 환경변수도 볼 수 있다.
최신 이미지 다시 당겨오기
docker pull service-name:latest
docker pull registry.example.com/service-name:v1.2.3
Docker 레지스트리에서 최신 이미지를 다시 당겨온다. 로컬 캐시가 오래된 이미지일 수도 있기 때문이다.
컨테이너 환경 확인
docker exec service-name env | grep -E 'VERSION|TAG|IMAGE'
docker inspect service-name | grep -A 50 'Env'
실행 중인 컨테이너의 환경변수에서 버전 정보를 확인한다. 빌드 시간이나 커밋 해시 같은 정보가 있으면 어느 소스 코드로 빌드되었는지 알 수 있다.
로그에서 버전 확인
docker logs service-name | head -20
애플리케이션 시작 로그에서 버전 정보를 확인한다. 많은 애플리케이션은 시작할 때 자신의 버전을 출력한다.
재배포 전 체크리스트
- 레지스트리에 최신 이미지가 정말로 푸시되어 있는가
- docker pull로 최신 버전을 받을 수 있는가
- 배포 설정에서 올바른 태그를 지정했는가 (latest 대신 구체적인 버전)
- 이전 이미지는 이미 정리했는가
- 배포 후 올바른 이미지가 실행 중인지 확인했는가
이미지 태그 문제는 배포 설정을 정확히 하는 것만으로도 대부분 해결된다.