4-1 Volume和Bind Mount
容器刪除后里面的數據會丟,怎麼才能保持刪除之後數據不丟呢?這就需要用到數據捲去管理。
Docker提供三種不同的方式將數據從宿主機掛載到容器中:
Volumes:Docker管理宿主機文件系統的一部分(/var/lib/docker/volumes)
Bind mounts:可以存儲在宿主機系統的任意位置。相當於軟連接的概念
Tmpfs:掛載存儲在宿主機系統的內存中,而不會寫入宿主機的文件系統
Volumes
創建volumes
docker volume create nginx-vol
創建一個數據持久化的容器(多個容器可以共用一個數據卷,實現數據共享)。
查看卷目錄。
docker run -itd --name=nginx-test -p 88:80 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx ls /var/lib/docker/volumes/nginx-vol/_data/
查看volumes
docker volume ls
查看卷的詳細信息
docker volume inspect nginx-vol
刪除數據卷
docker container stop nginx-test docker container rm nginx-test docker volume rm nginx-vol
刪除所有的容器
docker rm -f $(docker ps -q -a)
注意:
1. 如果沒有指定卷,會自動創建
2. 建議使用-mount
Bind Mounts掛載
用卷創建一個容器:
創建數據卷之前需在宿主機創建掛載目錄
mkdir -p /app/wwwroot docker run -itd --name=nginx-test --mount type=bind,src=/app/wwwroot/,dst=/usr/share/nginx/html nginx
在/app/wwwroot touch個aaa的文件
查看容器目錄是否有aaa文件
docker container exec nginx-test ls /usr/share/nginx/html
綁定驗證:
docker inspect nginx-test
刪除:
docker container stop nginx-test docker container rm nginx-test
注意:
1. 如果源文件/目錄不存在,不會自動創建,會報錯
2. 如果掛載目標在容器中非空目錄,則該目錄現有的內容會被隱藏