Docker數據卷 掛載數據到容器的方法

PS:關於卷的官方文檔:https://docs.docker.com/storage/

1. 三種掛載數據的方法

- volumes

docker管理宿主機文件系統的一部分(/var/lib/docker/volumes)。
保存數據的最佳方式。

- bind mounts

將宿主機上的任意位置文件或者目錄掛載到容器中。

- tmpfs

掛載存儲在主機的內存中,不持久存儲。

常用爲 volumes,bind mounts,tmpfs並不常用

在這裏插入圖片描述

2. 管理卷

Volume:

volume屬於管理命令
在這裏插入圖片描述
命令下的參數比較少,也比較好理解

create		//創建
inspect		//查看卷詳情
ls			//列出卷
rm			//刪除卷
prune		//刪除所有未使用的卷

在這裏插入圖片描述

創建一個卷

$ docker volume create web_01_vol

創建的卷在這個目錄下:
/var/lib/docker/volumes
在這裏插入圖片描述

如何掛載

如何掛載這個捲到容器中

$ docker container run -itd --name=web_01 -p 8080:80 --mount src=web_01_vol,dst=/usr/share/nginx/html nginx

在這裏插入圖片描述

容器創建成功後,該目錄也會掛載到 /var/lib/docker/volumes/web_01_vol/_data
在這裏插入圖片描述
修改index.html文件 驗證

在這裏插入圖片描述
在這裏插入圖片描述
如果沒有指定掛載卷,會自動掛載一個卷
在這裏插入圖片描述
重新創建一個卷積,共用一個卷,卷積的文件通用,數據卷不會因爲容器的刪除而丟失,它會長期保留。

$ docker container run -d --name=test_01 --mount src=web_01_vol,dst=/usr/share/nginx/html nginx

在這裏插入圖片描述
在這裏插入圖片描述

刪除卷

$ docker container stop 7740ca246029 f11f0c5fbcf5		//關機
$ docker container rm f11f0c5fbcf5 7740ca246029			//刪除容器
$ docker volume rm web_01_vol							//刪除卷

Bind Mounts

它是將宿主機的某個文件掛載到容器中
其命令格式都一樣

實例:

創建一個Bind 卷

假如宿主機 /home/目錄下有個1.txt文件需要掛載到容器中
目錄跟文件均可掛載,掛載到容器的文件和目錄跟宿主機其實差不多是一個軟鏈接狀態,容器中改變文件或宿主機改變文件都會受影響。

$ docker container run -itd --name=test_01 --mount type=bind,src=/home/test/123.txt,dst=/home/1.txt centos

在這裏插入圖片描述

驗證
如果沒有指定卷,會報錯。

$ docker container inspect c4a1deeb58d2

在這裏插入圖片描述

刪除Bind卷

跟Volume一樣

$ docker container stop 7740ca246029 f11f0c5fbcf5		//關機
$ docker container rm f11f0c5fbcf5 7740ca246029			//刪除容器
$ docker volume rm web_01_vol							//刪除卷

Volume 與 Bind 特點

Volume

  • 多個運行容器之間共享數據,多個容器可以同時掛載相同的卷。
  • 當容器停止或被移除時,該卷依然存在。
  • 當明確刪除卷時,卷纔會被刪除。
  • 將容器的數據存儲在遠程主機或其他存儲上(間接)
  • 將數據從一臺Docker主機遷移到另一臺時,先停止容器,然後備份卷的目(/var/lib/docker/volumes/)

Bind

  • 從主機共享配置文件到容器。默認情況下,掛載主機/etc/resolv.conf到每個容器,提供DNS解析。
  • 在Docker主機上的開發環境和容器之間共享源代碼。例如,可以將Maven target目錄掛載到容器中,每次在Docker主機
  • 上構建Maven項目時,容器都可以訪問構建的項目包。
  • 當Docker主機的文件或目錄結構保證與容器所需的綁定掛載一致時
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章