목록으로

컨테이너 배포 꼬임

약 3분 읽기Development#Development#Docker#issue댓글로 이동
main
date
Sep 26, 2025
slug
docker-comopse-force-recreate
author
status
Public
tags
Development
Docker
issue
summary
type
Post
thumbnail
category
Development
updatedAt
Apr 14, 2026 09:44 PM
CI 파이프라인이 시작될 때 종료 시켰더니 서버 내 도커 컨테이너 스위칭이 꼬였다.
현재 배포 시 기존 컨테이너 → 새로운 컨테이너 생성 후 교체 해주는 방식으로 되어있는데 (blue → green)
기존 컨테이너가 ECR에서 지워져 새로운 컨테이너를 생성할 때 해당 이미지를 불러올 수 없어 새로운 컨테이너가 Created 상태에서 이미지를 받아오지 못하는 것
 
f89b01f8a41c 36c "docker-entrypoint.s…" 1 hours ago Created f89b01f8a41c_ichart_dev_blue
 
docker-compose up 을 할 때 새로운 컨테이너 생성 기준을 이미 생성되어있던 이전 이미지를 참조하여 새로운 컨테이너를 만든다고 한다. 그렇기 때문에 ECR에서 지워진 이미지를 참조한 상태에서 새로운 컨테이너를 만들려고 하기 때문에 에러가 발생하여 이미지를 받아오지 못하는 것
 
# CI log + bash /home/profject/bin/bash/dev-deploy.sh No old networks to remove for ichart_dev_blue_default blue up Recreating f89b0__dev_blue ... Recreating f89b0__dev_blue ... error Continue with the new image? [yN] ERROR: for f89b0__dev_blue No such image: sha256:36adasdsdsadasdc ERROR: for frontend No such image: sha256:36adasdsdsadasdc The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing. No such image: sha256:36adasdsdsadasdc
 
우선 --force-recreate 으로 최신 이미지로 강제화 했는데 이 옵션에 대해 정확히 알지 못해 정리 해보려고 한다
 
  • 기존 컨테이너를 삭제하고 새로 생성
# sh docker-compose -p ${DOCKER_APP_NAME}_blue -f ~/project/deploy/development/docker-compose.blue.yml up -d --force-recreate
 
docker-compose up을 할 때 기본 동작
  1. 이미지 확인
docker-compose.yml에 지정된 이미지가 로컬에 없으면 pull 또는 build를 시도
로컬에 이미지가 있으면 기본적으로 해당 이미지 사용 (새 이미지를 pull 받아와도 자동으로 업데이트 하지 않음)
 
  1. 컨테이너 생성
기존 컨테이너가 없으면 새 컨테이너 생성
기존 컨테이너가 있으면
  • 기존 컨테이너 그대로 재사용
  • 이미지가 바뀌더라도 기존 컨테이너는 업데이트 되지 않음
→ docker-compose up -d 만 했을 경우 로컬에 있는 이미지 기반으로 컨테이너를 체크/생성
즉, 로컬에 이전 이미지가 남아 있을 경우 새로 이미지를 pull 받아오더라도 컨테이너 자체는 바뀌지 않음
 
여기서 —force-recrate 옵션을 주게 되면 기존 컨테이너 삭제 후 새로운 이미지와 함께 새로운컨테이너를 생성함
→ 항상 최신 이미지 기반으로 컨테이너 생성 가능
 
옵션/동작
기존 이미지 있음
새 이미지 있음
컨테이너 상태
docker-compose up -d
✅ 재사용
❌ 적용 안 됨
기존 컨테이너 재사용
docker-compose up -d --force-recreate
✅ 삭제 후 재생성
❌ 기존 로컬 이미지 기반
새 컨테이너 생성
docker-compose up -d --build --force-recreate
✅ 삭제 후 재생성
✅ 최신 pull/빌드
새 컨테이너 생성
 
-force-recreate를 쓰면 매번 기존 컨테이너를 삭제하고 새로 생성
 
항목
영향 및 설명
CPU/메모리
생성 과정에서 컨테이너 시작과정 초기화가 발생 → 아주 잠깐 추가 사용
디스크
컨테이너 레이어 새로 생성, 로그/임시 데이터 초기화됨. 볼륨을 사용하면 데이터는 유지됨
네트워크 연결
컨테이너 IP가 바뀌므로 내부/외부 연결 세션 초기화
배포 시간
컨테이너 삭제 + 생성 + 시작까지 시간 소요 (서비스 규모가 크면 몇 초~몇 분)