클라우드컴퓨팅

도커 Container Layer의 내용을 장기적으로 저장하기

salmon16 2024. 4. 7. 13:40

개요

컨테이너 실행 중에 생성/변경된 데이터는 container layer에 저장되며, 컨테이너가 삭제되면 container layer에 저장된 내용도 함께 삭제된다. 컨테이너 삭제 후에도 데이터를 유지하는 방법에 대해 알아보자

 

본론

Container Layer의 내용을 장기적으로 저장하는 방법에는 크게 2가지가 있다.

  • 볼륨 마운트를 통해 로컬 파일 시스템과 컨테이너의 파일 시스템을 동기화하기
  • export 명령어를 사용해서 컨테이너의 이미지와 Container Layer의 내용이 모두 저장된 새로운 이미지를 생성하기

1. 컨테이너 볼륨 마운트

  • 도커 호스트 파일 시스템의 특정 디렉터리를 컨테이너 파일 시스템의 특정 디렉터리로 매핑하자 
  • 마운트 되어 공유된 디렉터리는 컨테이너가 삭제된 이후에도 도커 호스트에 계속존재하므로 컨테이너 구동 중에 발생한 데이터를 지속적으로 유지할 수 있다.

도커 호스트에서 msg 파일을 생성한다.
도커 호스트의 현재 디렉토리를 컨테이너의 /tmp/msg 디렉토리로 마운드 한다. (존재하지 않는 경우 자동으로 생성)
도커 호스트에서 reply.txt 생성된 걸 확인

위와 같이 마운트를 사용하면 컨테이너에서 도커 호스트에서 생성한 파일이 컨테이너에 마운트 된 걸 확인할 수 있다.

또한 컨테이너 내부에서 생성한 파일(reply.txt)도 도커 호스트의 폴더에서 확인할 수 있다. 

2. 컨테이너 export

  • 컨테이너의 이미지와 컨테이너 구동 중에 발생한 변경내역(Container Layer에 저장된 콘텐츠)을 포함하여 새로운 이미지 생성

컨테이너에 /home/hello안에 welcomt.txt파일 생성
도커 호스트에서 새로운 터미널을 열어 위에서 생성한 컨테이너를 myubuntu.tar 파일로 export
myubuntu.tar파일을 myubuntu:latest라는 NAME:TAG로 import하기

위 명령은 myubuntu.tar 아카이브 파일을 Docker에 가져와서 myubuntu:latest라는 이름으로 저장한다. 이렇게 하면 해당 이미지를 로컬 Docker 이미지 저장소에서 사용할 수 있다.

 

myubuntu:latest 이미지로 컨테이너 실생 시, 기존에 Container Layer에 저장된 내용이 유지되고 있음을 확인