본문 바로가기
IT

[docker] docker storage(volume, bind, tmpfs)

by laoching 2024. 7. 11.
728x90
반응형

도커는 컨테이너를 삭제하면 내부 데이터가 다 날라가는데 데이터를 저장시킬 공간을 docker storage라고 부름

도커 스토리지 종류

bind mount : share docker host directory directly

volume : create a volume using docker and share it with the container’s directory

tmpfs : file save in docker host memory, when you delete container, file also deleted

도커 볼륨(volume 방식)

볼륨 확인

docker volume ls

볼륨 만들기

docker volume create [volume name]

run container using myvolume01

docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=volume,source=[docker volume name],target=[path inside container] -d postgres

ex) docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=volume,source=myvolume01,target=/var/lib/postgresql/data -d postgres

docker container exec -it [container id] /bin/bash

만든 볼륨이 컨테이너를 삭제해도 저장되는지 테스트 하기

user01이라는 계정을 만들고 아까 위에서 지정한 경로에 들어가서 ls 명령어의 결과가 도커 볼륨에 저장되는지 체크하면 된다.

컨테이너를 멈추고 제거했음

 

그 다음 컨테이너를 myvolume01을 이용해 다시 기동 하면 안에 유저가 똑같이 user01이 살아있음을 확인 가능

docker container run -e POSTGRES_PASSWORD=mysecretpassword -v myvolume01:/var/lib/postgresql/data -d postgres

 

bind mount 방식

도커 호스트 디렉토리와 컨테이너 디렉토리를 연결하여 데이터를 보관하는 방식

  1. 도커 컨테이너 실행
    1. 연결할 디렉토리 정하기 : /Users/sangs/docker
    2. jeongsangmin-ui-MacBookPro:docker sangs$ pwd /Users/sangs/docker jeongsangmin-ui-MacBookPro:docker sangs$ ll total 0 drwxr-xr-x 5 sangs staff 160 7 11 22:00 . drwxr-x---+ 27 sangs staff 864 7 10 21:14 .. -rw-r--r-- 1 sangs staff 0 7 10 22:09 test1 -rw-r--r-- 1 sangs staff 0 7 11 22:00 test2 -rw-r--r-- 1 sangs staff 0 7 10 22:12 madeindocker
    3. docker container run -e POSTGRES_PASSWORD=mysecretpassword —mount type=[mount type],source=[local directory path],target=[container directory path] -d postgresex) docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=bind,source=/Users/sangs/docker,target=/work -d postgres
    4. docker container exec -it 56144d402c50 /bin/bash
  1. 컨테이너에서 지정한 경로로 접속(여기서는 /work)

 

tmpfs mount

중요한 데이터를 일시적으로 도커 호스트 메모리에 저장하고 싶을 때 사용, 컨테이너 간 데이터 공유 지원하지 않음, 또한 실행 중인 컨테이너를 정지시키면 tmpfs mount도 삭제된다.

  1. 생성docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=tmpfs,destination=/var/lib/postgresql/data -d postgres
  2. docker container run -e POSTGRES_PASSWORD=mysecretpassword —mount type=[mount type],destination=[저장하고자 하는 경로] -d postgres
  3. 확인
  4. docker inspect [container names] —format ‘’

"Mounts": [ { "Type": "tmpfs", "Source": "", "Destination": "/var/lib/postgresql/data", "Mode": "", "RW": true, "Propagation": "" } ],

tmpfs 타입으로 마운트 되어있음을 확인 가능

728x90
반응형

댓글