第四章 Docker管理應用程序數據

4-1 VolumeBind Mount


容器刪除后里面的數據會丟,怎麼才能保持刪除之後數據不丟呢?這就需要用到數據捲去管理。

Docker提供三種不同的方式將數據從宿主機掛載到容器中:

VolumesDocker管理宿主機文件系統的一部分(/var/lib/docker/volumes)

Bind mounts:可以存儲在宿主機系統的任意位置。相當於軟連接的概念

Tmpfs:掛載存儲在宿主機系統的內存中,而不會寫入宿主機的文件系統

111.png

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 touchaaa的文件

查看容器目錄是否有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. 如果掛載目標在容器中非空目錄,則該目錄現有的內容會被隱藏


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章