6.1.컨테이너 속 데이터가 사라지는 이유

  • 컨테이너의 파일 시스템은 단일 디스크로 여러 출처로부터 합쳐 컨테이너에 전달한 가상 파일 시스템
  • 이 출처는 기본적으로 이미지 레이어와 컨테이너의 기록 가능 레이어로 구성
  • 이미지 레이어:
  • 읽기 전용, 모든 컨테이너가 공유
  • 이미지를 내려받은 순간부터 삭제할 때 까지 로컬 컴퓨터의 이미지 레이어에 존재
  • 기록 가능 레이어:
  • 읽고 쓰기 가능, 각 컨테이너가 따로 갖는다.
  • 컨테이너를 실행할 때 생성되며 컨테이너를 삭제할 때 함께 삭제된다.

이미지 레이어에 포함된 파일의 내용 수정

  • 도커는 기록 중 복사(copy-on-write)라는 방법을 사용해 읽기 전용 레이어의 파일을 수정할 수 있다.
  • 컨테이너에서 이미지 레이어에 포함된 파일을 수정하려 하면
  • 도커가 이 파일을 기록 가능 레이어로 복사해 온다.
  • 기록 가능 레이어에서 파일을 수정한다.
001) # 컨테이너를 실행해 이미지 레이어에 포함된 파일의 내용을 출력
002)  docker container run --name f1 diamol/ch06-file-display
003) https://www.manning.com/books/learn-docker-in-a-month-of-lunches
004) 
005) # 파일을 수정한 다음 다시 변경된 파일 내용을 확인한다.
006)  echo "http://eltonstoneman.com" > url.txt
007)  cat url.txt
008) http://eltonstoneman.com
009)  
010)  docker container cp url.txt f1:/input.txt
011) Successfully copied 2.05kB to f1:/input.txt
012)  
013)  docker container start --attach f1
014) http://eltonstoneman.com
  1. 003: 이미지 레이어 포함된 파일(/input.txt)로 실행된 컨테이너의 실행 결과
  2. 010: 호스트 머신의 파일로 컨테이너의 파일 교체
  3. 014: 변경된 파일로 실행된 결과가 변화

links

social