운영중인 컨테이너 환경을 그대로 백업하거나 복제해야 하는 경우 이미지로 저장할 수 있다.

요즘은 개발, 테스트, 운영 등 대부분의 작업을 도커 컨테이너 환경에서 하는 것 같다. 이 이유는 환경 일관성, 리소스 효율성, 이식성 등 다양한 이점이 있기 때문이다.
컨테이너 환경을 사용중이라면 컨테이너(서버) 환경을 그대로 백업하거나 복제하여 사용할 수 있다. 이렇게 컨테이너를 도커 이미지로 저장하는 있는 기능은 이러한 도커의 장점을 극대화할 수 있는 중요한 기능 중 하나이다.
컨테이너를 이미지로 저장하면, 해당 시점의 상태 설정, 실행 중인 서비스, 내부 데이터 등을 그대로 캡처하여 보존할 수 있다. 이 이미지를 다른 환경에 배포하거나, 백업용으로 보관하거나, 장애 발생 시 롤백용으로 활용할 수 있어 운영 안정성과 유연한 배포 전략에 매우 유리하다.
이미지 생성 🖼️
컨테이너를 이미지로 생성하려면 docker commit 명령어를 사용하면 된다.
docker commit은 현재 실행 중인 컨테이너 상태 전체(파일시스템 포함) 를 새로운 이미지로 저장하는 명령어다. 컨테이너 내부에 수동으로 설정하거나 변경한 모든 내용이 함께 저장되기 때문에 서비스나 데이터가 많다면 시간이 좀 걸릴 수 있다.
애플리케이션과 DB에 데이터가 꽤 있어서 3~4시간정도 소요됨. 백그라운드로 돌리는 것을 추천한다.
docker commit <기존컨테이너명> <저장할이미지명>
#Example
docker commit my-app-container my-app-image:backup
컨테이너 실행 🟢
이미지가 정상적으로 생성되었다면 docker images를 했을 때 생성된 이미지가 목록에 표시될 것이다.
그럼 이미지를 push하여 백업해두거나 새로 컨테이너로 올려서 모든 환경, 데이터가 동일한 복제된 컨테이너를 만들어 사용하거나 다른 서버에서 가져와 사용할 수 있다.
docker run -dit \
--name <새컨테이너명> \
--net <브리지네트워크> \ # 생략 가능
--ip <새로운IP> \ # 생략 가능
<복사된이미지명>
#Example
docker run -dit \
--name my-app-static \
--net my-bridge-net \
--ip 172.30.0.10 \
my-app-image:backup
⚠️ 주의 사항
commit 시 대상이 되는 컨테이너는 데이터 손상을 방지하기 위해 pause 상태로 전환되는데 --pause false 옵션으로 방지할 수 있지만 사용하지 않는 것을 권장한다.
'🖥️ 서버(Server) > Docker' 카테고리의 다른 글
| [Docker] 컨테이너 환경 모니터링 시스템 구축하기 (Prometheus + Grafana) (2) | 2025.04.22 |
|---|---|
| [Docker] 에러 노트 (2) | 2024.06.30 |
| [Docker] nGrinder 부하 테스트 환경 구성 (with. AWS) (1) | 2024.06.30 |
| [Docker] 02. 컨테이너 핵심 개념과 사용 방법 (Dockerfile, compose, volumes, network...) (0) | 2024.05.06 |
| [Docker] 01. 가상화와 컨테이너 및 도커 엔진의 구조 (0) | 2024.05.06 |