一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - Docker數據存儲之Volumes詳解

Docker數據存儲之Volumes詳解

2021-03-18 19:53cheergoivan 服務器知識

今天小編就為大家分享一篇關于Docker數據存儲之Volumes詳解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

默認容器的數據的讀寫發生在容器的存儲層,當容器被刪除時其上的數據將會丟失。所以我們應該盡量保證容器存儲層不發生寫操作,為了實現數據的持久化存儲我們需要選擇一種方案來保存數據,當前有以下幾種方式:

  • volumes
  • bind mounts
  • tmpfs mounts

下圖展示了這三種技術:

Docker數據存儲之Volumes詳解

volumes

volumes(數據卷)是一個可供一個或多個容器使用的位于宿主機上特殊目錄,它擁有以下特性:

  • 數據卷可以在容器間共享和重用
  • 對數據卷的寫入操作,不會對鏡像有任何影響
  • 數據卷默認會一直存在,即使容器被刪除

使用數據卷的目的是持久化容器中的數據,以在容器間共享或者防止數據丟失(寫入容器存儲層的數據會丟失)。

使用數據卷的步驟一般分為兩步:

  1. 創建一個數據卷
  2. 使用-v或--mount參數將數據卷掛載容器指定目錄中,這樣所有該容器針對該指定目錄的寫操作都會保存在宿主機上的volume中。

volume管理

創建一個volume:

?
1
$ docker volume create my-vol

查看volumes:

?
1
2
$ docker volume ls
local    my-vol
?
1
2
3
4
5
6
7
8
9
10
11
$ docker volume inspect my-vol
[
 {
  "driver": "local",
  "labels": {},
  "mountpoint": "/var/lib/docker/volumes/my-vol/_data",
  "name": "my-vol",
  "options": {},
  "scope": "local"
 }
]

我么可以看到創建的volume my-vol保存在目錄/var/lib/docker/volumes/下,以后所有針對該volume的寫數據都會保存中目錄/var/lib/docker/volumes/my-vol/_data下。

刪除一個volume:

?
1
$ docker volume rm my-vol

或者刪除所有未使用的volumes:

?
1
docker volume prune

掛載數據卷到容器目錄

創建了一個volume之后,我們可以在運行容器時通過指定-v或--mount參數來使用該volume:

使用--mount參數:

?
1
2
3
4
$ docker run -d \
 --name=nginxtest \
 --mount source=nginx-vol,destination=/usr/share/nginx/html \
 nginx:latest

source指定volume,destination指定容器內的文件或文件夾。

或者使用-v參數:

?
1
2
3
4
$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html \
 nginx:latest

掛載成功后,容器從/usr/share/nginx/html目錄下讀取或寫入數據,實際上都是從宿主機的nginx-vol數據卷中讀取或寫入數據。因此volumes或bind mounts也可以看作是容器和宿主機共享文件的一種方式。

-v參數使用冒號分割source和destination,冒號前半部分是source,后半部分是destination。

如果你掛載一個還不存在的數據卷,docker會自動創建它。(因此創建數據卷那一步非必需)

如果容器中的待掛載的目錄不是一個空目錄,那么該目錄下的文件會被復制到數據卷中。(bind mounts下,宿主機上的目錄總會覆蓋容器中的待掛載目錄)

-v參數和--mount參數總的來說功能幾乎相同,唯一的區別是在運行一個service時只能夠--mount參數來掛載數據卷。

使用只讀數據卷

有些情況下,我們希望某個數據卷對某個容器來說是只讀的,可以通過添加readonly選項來實現:

?
1
2
3
4
$ docker run -d \
 --name=nginxtest \
 --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
 nginx:latest

或者使用-v參數:

?
1
2
3
4
$ docker run -d \
 --name=nginxtest \
 -v nginx-vol:/usr/share/nginx/html:ro \
 nginx:latest

volumes使用場景

請參考這篇文章:docker數據存儲總結

參考文章

https://docs.docker.com/storage/volumes/#share-data-among-machines

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

原文鏈接:https://www.jianshu.com/p/c763df5a3f8b

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天草天天 | 亚洲丰满模特裸做爰 | 色里番52kkm全彩 | 国产精品久久久久久网站 | 国产精品视频自拍 | gay18高中生白袜xnxx动漫 | 午夜看片a福利在线观看 | 国产亚洲精品aaa大片 | 羲义嫁密着中出交尾gvg794 | hd在线观看免费高清视频 | 幻女free性俄罗斯第一次摘花 | 国产日韩高清一区二区三区 | 亚洲精品成人a | 草莓香蕉绿巨人丝瓜榴莲污在线观看 | 亚洲精品国产一区二区三区在 | 美女草b| 大叔在线观看 | 九色PORNY真实丨国产免费 | 国产私拍精品88福利视频 | 精品淑女少妇AV久久免费 | japanese日本护士 | 久久青青草原综合伊人 | www.日本视频 | 91在线视频免费观看 | 天堂在线看 | 日本xxx片免费高清在线 | 日韩成人一级 | 极品蜜桃臀美女啪啪 | 69欧美性猛交 | 精品久久看 | 国产无限免费观看黄网站 | 欧美日韩亚洲综合在线一区二区 | 日韩成人一级 | 国产精品视频在这里有精品 | 9久re在线观看视频精品 | 精品老司机在线视频香蕉 | 温柔校草高h| 欧美黑人一级片 | 蜜月aⅴ免费一区二区三区 蜜桃影像传媒推广 | 成人女人天堂午夜视频 | 日本在线视|