Docker 掛載


簡介

  集群當中掛載數據卷的方式采用--mount標志。而且-mount標記相比於-v意圖更明確.

  如果不進行數據掛載的話,當容器不在時,對應的數據也不會持久存在

存儲方式

  • 卷存儲,由docker管理使用docker -volume create創建管理。卷也是docker官方推薦的持久化方式
  • 綁定掛載,就是把宿主機的地址掛載到容器內
  • tmpfs掛載只存儲在主機系統的內存當中。(用到的比較少)

綁定目錄

  采用-v的方式掛載容器。該文件或目錄不需要在Docker主機上已經存在,如果尚不存在,則按需創建

  • 采用-v的形式宿主機的文件會覆蓋data里面的文件。
  • 如果宿主機目錄為空的話,容器內掛載文件會清空
docker run -tid -v /etc/docker/redis/data:data --name redis redis

1.自動創建目錄

# 該路徑現在不存在,run之后自動生成
 docker run -tid --name nginx -v /root/data/nginxtest:/etc/nignx/ nginx


  圖中可見,在運行時會自動創建宿主機目錄,但是內容為空,並且容器也無法啟動,會報錯:未找到nginx.conf 也就是說**在映射的時候,宿主機沒有nginx.conf**文件.所以導致nginx無法啟動

2.自動創建文件

  這里會看到直接報錯。


3.宿主機已存在文件掛載

  正常掛載


4.掛載已存在目錄

  正常掛載


總結

1.掛載空目錄容器內的信息會被覆蓋.

2.掛載目錄時會自動創建目錄,但是文件不會創建

3.如果需要掛載目錄,需要先把需要掛載的內容cp到宿主機,然后執行掛載

創建數據卷

  數據卷項目綁定d目錄有如下優點:

  • 更容易遷移和備份
  • 可以使用docker cli命令管理卷
  • 卷在liunx和windows 都可以使用
  • 可在多個容器之間共享數據卷
# 創建數據卷
docker volume create my-data

# 查看信息
docker volume inspect my-data

# 查看所有卷信息
docker volume ls

# 刪除卷
docker volume rm my-data

掛載數據卷

  首先需要創建數據卷,當然也可以在創建service的時候,指定數據卷名稱,會自動創建一個數據卷,集群中的數據卷都是采用--mount參數進行掛載。

  type為bind的時候,掛載的是主機路徑,必須引用主機上現有的路徑,並且不會自動創建該路徑,如果路徑不存在,服務創建失敗

  type為volume的時候掛載的是數據卷。

 # 掛載數據卷
 docker service create --mount type=volume,src=redisdata,dst=/data --name redis redis
 
 # 掛載目錄
 docker service create --mount type=bind,src=/data,dst=/data --name redis redis


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM