도커는 컨테이너를 삭제하면 내부 데이터가 다 날라가는데 데이터를 저장시킬 공간을 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 방식
도커 호스트 디렉토리와 컨테이너 디렉토리를 연결하여 데이터를 보관하는 방식
- 도커 컨테이너 실행
- 연결할 디렉토리 정하기 : /Users/sangs/docker
- 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
- 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
- docker container exec -it 56144d402c50 /bin/bash
- 컨테이너에서 지정한 경로로 접속(여기서는 /work)
tmpfs mount
중요한 데이터를 일시적으로 도커 호스트 메모리에 저장하고 싶을 때 사용, 컨테이너 간 데이터 공유 지원하지 않음, 또한 실행 중인 컨테이너를 정지시키면 tmpfs mount도 삭제된다.
- 생성docker container run -e POSTGRES_PASSWORD=mysecretpassword --mount type=tmpfs,destination=/var/lib/postgresql/data -d postgres
- docker container run -e POSTGRES_PASSWORD=mysecretpassword —mount type=[mount type],destination=[저장하고자 하는 경로] -d postgres
- 확인
- docker inspect [container names] —format ‘’
"Mounts": [ { "Type": "tmpfs", "Source": "", "Destination": "/var/lib/postgresql/data", "Mode": "", "RW": true, "Propagation": "" } ],
tmpfs 타입으로 마운트 되어있음을 확인 가능
'IT' 카테고리의 다른 글
[쿠버네티스] helm을 통한 쿠버네티스 대시보드 생성 (0) | 2024.07.17 |
---|---|
[쿠버네티스] 쿠버네티스의 구조 (0) | 2024.07.15 |
[docker] 이미지, 컨테이너 생성 (0) | 2024.07.11 |
맥에서 패키지 관리자 설치하기 (0) | 2024.07.09 |
[AWS] CloudFront (0) | 2024.07.04 |
댓글