Docker Compose Image 관리 완벽 가이드! Image 다운로드·Build·업데이트·삭제 방법 알아보기

Docker Compose에서 Container를 실행하기 위해서는 반드시 Docker Image가 필요합니다.

구조:

Docker Image

↓

Container 생성

↓

Service 실행

Docker Compose는 YAML 파일에 정의된 Image 정보를 기준으로 필요한 Image를 가져오거나 직접 Build합니다.

예:

services:

  web:

    image: nginx:1.27

실행:

docker compose up

동작:

nginx Image 확인

↓

없으면 Registry 다운로드

↓

Container 생성

실제 서버 운영에서는 다음 Image 관리 작업이 필요합니다.

  • Image 다운로드
  • Image 목록 확인
  • Image Build
  • Image 업데이트
  • Image 삭제
  • Image Version 관리

이번 글에서는 Docker Compose Image 관리 방법을 서버 운영 관점에서 자세히 알아보겠습니다.

Docker Compose Image란 무엇인가?

Docker Image는 Container를 생성하기 위한 실행 환경입니다.

포함 내용:

  • 운영체제 Layer
  • Application 코드
  • Library
  • 실행 환경
  • 설정 파일

구조:

Dockerfile

↓

Docker Image

↓

Container

↓

Application 실행

예:

nginx:1.27

mysql:8.0

redis:7

각 Image는 Version Tag를 가지고 있습니다.

Docker Compose Image 지정 방법

가장 기본적인 방식:

services:

  nginx:

    image: nginx

Version 지정:

services:

  nginx:

    image: nginx:1.27

권장:

nginx:1.27

비권장:

nginx:latest

이유:

  • 자동 업데이트 발생
  • 동일 환경 재현 어려움
  • 장애 원인 추적 어려움

Docker Compose Image 다운로드 방법

Registry에서 Image 가져오기:

docker compose pull

특정 Service:

docker compose pull nginx

동작:

Docker Registry

↓

Image 다운로드

↓

Local 저장

확인:

docker images

Docker Compose Image 목록 확인

전체 Image 확인:

docker images

Compose 프로젝트 Image 확인:

docker compose images

결과:

Service

Image

Container

예:

nginx

mysql

redis

Docker Compose Image Build 방법

직접 Image를 생성하는 경우 build를 사용합니다.

docker-compose.yml:

services:

  app:

    build:

      context: .

구조:

Dockerfile

↓

Image Build

↓

Container 생성

Build 실행:

docker compose build

실행:

docker compose up -d

Docker Compose Image 재Build

소스 코드 변경 후 Image를 다시 만들어야 합니다.

일반 Build:

docker compose build

Cache 없이 Build:

docker compose build --no-cache

차이:

명령어특징
build기존 Cache 사용
build –no-cache전체 새 Build

Docker Compose Image 업데이트 방법

최신 Image 가져오기:

docker compose pull

재생성:

docker compose up -d

흐름:

Registry

↓

새 Image 다운로드

↓

기존 Container 교체

↓

새 Version 실행

Docker Compose Image 강제 업데이트

Image 변경을 강제로 적용:

docker compose up -d --pull always

동작:

항상 Registry 확인

↓

최신 Image 적용

Production 배포에서 활용됩니다.

Docker Compose Image 삭제 방법

사용하지 않는 Image 확인:

docker images

Image 삭제:

docker rmi image-name

예:

docker rmi nginx:1.27

Docker Compose 사용하지 않는 Image 정리

불필요한 Image 삭제:

docker image prune

전체 미사용 Image:

docker image prune -a

주의:

삭제된 Image

↓

다음 실행 시 다시 다운로드 필요

Docker Compose Image Tag 관리

운영 서버에서는 Version 관리가 중요합니다.

좋은 방식:

app:1.0.0

app:1.0.1

app:1.1.0

배포 흐름:

app:1.0.0 운영

↓

테스트

↓

app:1.0.1 배포

문제 발생:

Rollback

↓

app:1.0.0 복구

Docker Compose Image와 Dockerfile 관계

Image 생성 과정:

Dockerfile

↓

docker compose build

↓

Docker Image

↓

Container

예:

Dockerfile:

FROM node:20

COPY . .

RUN npm install

CMD ["npm","start"]

Compose:

services:

  app:

    build: .

실행:

docker compose up

Docker Compose Image 실무 예제

프로젝트:

project/

├── docker-compose.yml

├── Dockerfile

└── app/

docker-compose.yml:

services:

  app:

    build: .

    image:

      my-app:v1.0.0

Build:

docker compose build

실행:

docker compose up -d

결과:

Dockerfile

↓

my-app:v1.0.0

↓

Container 실행

Docker Compose Image 운영 Best Practice

추천:

✅ Image Version 고정
✅ latest 사용 최소화
✅ 정기 Image 업데이트
✅ 불필요 Image 정리
✅ Security Scan 진행
✅ Registry 관리

운영 예:

Production

↓

app:1.0.0


Testing

↓

app:1.0.1

Docker Compose Image 장애 대응

Image Pull 실패

확인:

docker compose pull

확인:

  • Registry 접속
  • Image 이름
  • Tag

Image 실행 오류

확인:

docker compose logs

잘못된 Version 배포

Rollback:

이전 Tag Image 사용

자주 묻는 질문

Image와 Container 차이는 무엇인가요?

Image는 실행 원본이고 Container는 실행된 인스턴스입니다.

Image 업데이트는 어떻게 하나요?

docker compose pulldocker compose up -d를 실행합니다.

직접 만든 Image도 Compose에서 사용할 수 있나요?

가능합니다.

build 옵션을 사용하면 Dockerfile 기반 Image를 생성할 수 있습니다.

Production에서는 latest를 사용하면 안 되나요?

권장하지 않습니다.

Version Tag 관리가 안정적인 운영에 적합합니다.

마무리

Docker Compose Image 관리는 안정적인 Container 운영을 위한 핵심 과정입니다.

Image Version 관리, Build, Pull, Update, Cleanup 방법을 이해하면 서버 환경을 더욱 안정적으로 유지할 수 있습니다.

특히 Production 환경에서는 Image Tag 관리와 Registry 운영 전략이 장애 대응과 Rollback에 매우 중요합니다.

다음 글에서는 Docker Compose에서 외부 사용자와 Container를 연결하는 핵심 기능인 Port 설정 방법을 자세히 알아보겠습니다.

댓글 남기기