코젤브

[Docker] docker-compose 사용 시 특정 서비스 이미지 재생성 본문

컴공의 일상

[Docker] docker-compose 사용 시 특정 서비스 이미지 재생성

코딩하는 젤리 2024. 10. 29. 11:16

docker-compose로 한번에 여러 컨테이너와 서비스를 한 네트워크에서 돌릴 때,

특정 서비스만 이미지를 재생성하거나 다시 빌드해야할 때가 존재합니다.

 

특정 Docker 이미지를 삭제하고 재생성하는 방법은 다음과 같습니다.

 

1. 특정 이미지 삭제

먼저, 삭제하려는 이미지를 찾고 ID를 확인합니다.

docker images



이 명령어로 현재 존재하는 이미지 목록이 나타납니다. 삭제하려는 이미지의 `IMAGE ID`를 확인한 후, 아래 명령어로 삭제합니다.

docker rmi <IMAGE_ID>

 

단, 이미지가 사용 중인 경우 삭제되지 않을 수 있습니다.

이 경우 해당 이미지를 사용 중인 모든 컨테이너를 중지 및 삭제해야 합니다.

 

2. 이미지가 사용 중인 경우, 관련 컨테이너 중지 및 삭제

이미지가 사용 중이라면, 먼저 해당 이미지를 사용하는 컨테이너를 중지하고 삭제해야 합니다.

docker ps -a # 모든 컨테이너 목록 확인
docker stop <CONTAINER_ID> # 컨테이너 중지
docker rm <CONTAINER_ID> # 컨테이너 삭제

 

3. 삭제 후 이미지 재생성

이미지를 다시 생성하려면, 프로젝트 디렉토리에서 `docker-compose.yml` 파일이 있다면 `docker-compose` 명령을 사용하고, 그렇지 않다면 `docker build` 명령을 사용할 수 있습니다.

방법 1: `docker-compose`를 이용한 재생성

docker-compose build <SERVICE_NAME> # 특정 서비스만 빌드할 때
docker-compose up -d --build # 모든 서비스를 다시 빌드 및 실행

 

방법 2: `docker build`를 이용한 재생성

`Dockerfile`이 있는 디렉토리에서 아래 명령어로 이미지를 다시 빌드합니다.

docker build -t <IMAGE_NAME> .

`-t` 옵션을 사용해 새로운 태그를 추가할 수 있습니다.

 

 

docker와 docker-compose 관련 yml 파일 작성법에 대해서 추후 다루겠습니다.