도커에서 데이터를 관리하는 방법에 대해 정리해보고자 한다.
도커 컨테이너에 생성되는 모든 데이터는 컨테이너 이미지 레이어에 write 형식으로 저장된다. 해당 컨테이너가 더이상 존재하지 않으면 write된 레이어는 삭제(복구 불가능)된다. 이를 해결하기 위해 도커는 volume과 bind mount 옵션을 제공한다.
# docker volume create volume이름
$ docker volume create yoonsy
/var/lib/docker/volumes/
경로에 저장된다. # docker run --name 컨테이너이름 -dt -v volume이름:마운트경로 이미지이름:태그
# -dt: 컨테이너는 백그라운드에서 실행시킬거고(-d), 터미널을 사용할 수 있게 해줘(-t)
# -v: yoonsy volume이 컨테이너 내부의 /root 경로에 마운트되게 할게
$ docker run --name yoonsy_container -dt -v yoonsy:/root python_jupyter:3.9
$ docker run --name new_yoonsy_container -dt -v yoonsy:/root python_jupyter:3.9
또는
$ docker run --name new_yoonsy_container -dt --volumes-from yoonsy_container python_jupyter:3.9
yoonsy
volume을 생성한다.
$ docker volume create yoonsy
yoonsy
volume을 /root
디렉토리에 마운트하는 yoonsy_container
컨테이너를 생성한다.
$ docker run --name yoonsy_container -dt -v yoonsy:/root python_jupyter:3.9
yoonsy_container
컨테이너의 /root
디렉토리에 testfile.txt
파일을 생성한다.$ touch testfile.txt
yoonsy
volume을 공유하는 새로운 컨테이너 new_yoonsy_container
를 생성한다.
$ docker run --name new_yoonsy_container -dt -v yoonsy:/root python_jupyter:3.9
또는
$ docker run --name new_yoonsy_container -dt --volumes-from yoonsy_container python_jupyter:3.9
new_yoonsy_container
컨테이너의 /root
디렉토리를 확인한다.
→ testfile.txt
파일이 있는 것을 확인!
# docker run --name 컨테이너이름 -dt -v 호스트디렉토리:마운트경로 이미지이름:태그
# -dt: 컨테이너는 백그라운드에서 실행시킬거고(-d), 터미널을 사용할 수 있게 해줘(-t)
# -v: 호스트의 ~/Desktop 디렉토리가 컨테이너 내부의 /root 경로에 마운트되게 할게
$ docker run --name yoonsy_container -dt -v ~/Desktop:/root python_jupyter:3.9
—-volumes-from
옵션을 사용할 수 있다.$ docker run --name new_yoonsy_container -dt --volumes-from yoonsy_container python_jupyter:3.9