DEV/Docker-Debian

5. Docker 이미지 생성 (컨테이너 현재 실행된 상태 저장)

서버엔지니어 2023. 3. 2.
728x90

php 컨테이너의 경우 라이브러리 등을 추가 설치하고 docker compose down 및 up -d 명령을 사용하여 컨테이너를 재가동 하면 컨테이너에 설치한 라이브러리 파일이 초기화 되어져 다시 라이브러리를 설치하고 php 컨테이너를 재시작 해주어야 합니다.
이런 번거로움을 줄이기 위해서 라이브러리 설치 후 아래와 같이 컨테이너의 마지막 상태를 이미지로 저장할 수 있습니다.

실행중인 php 컨테이너를 중지합니다.

 

docker compose stop php

중지한 php 컨테이너의 ID 를 확인 합니다.

docker ps -a |grep php |awk {'print $1'}
cb2ed69f9009

중지한 컨테이너 ID 값을 이용하여 새로운 이미지를 만듭니다.

docker commit cb2ed69f9009 php:8.2.0-fpm_update1

===============================================================================

sha256:1e7354a1a3030c6cf7e842f200bb3c9319e99fc700f68f8b363410b5a8e48c64

===============================================================================
생성된 이미지 리스트를 확인합니다.
docker images

===============================================================================

REPOSITORY   TAG                 IMAGE ID       CREATED          SIZE
php          8.2.0-fpm_update1   f58e1eff6e1a   19 seconds ago   496MB
httpd        2.4.54              463980270363   7 weeks ago      145MB
php          8.2.0-fpm           8ee3a55f199a   2 months ago     450MB
mysql        8.0.31              7484689f290f   2 months ago     538MB
===============================================================================


다음 php 컨테이너를 생성할때 새로운 이미지 기반으로 생성하도록 합니다.

vi docker-compose.yml
===============================================================================

    php:
        image: php:8.2.0-fpm_update1
===============================================================================

 

이제 php 컨테이너를 삭제 해도 이미지 기반으로 생성 및 구동할때, 이미 이전에 설치한 라이브러리가 있는것을 확인 할 수 있습니다.

댓글