亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker 數據管理Named volume詳解

2024-09-01 13:51:07
字體:
來源:轉載
供稿:網友

Docker數據管理:Named volume

Docker中可以使用Named volume和data container來進行數據的管理。

單一Container的使用Helloworld

Step 1:創建一個Named Volume

事前確認volume的信息,沒有VOLUME存在

[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAME[root@host88 volumes]#

確認/var/lib/docker/volumes的狀況

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# lltotal 0[root@host88 volumes]#

創建一個名為volname的數據卷,通過-v參數可以進行創建,同時也可以通過docker volume create來創建。

[root@host88 volumes]# docker run -it -v volname:/volumedata/dbdata debianroot@b2e3523a6dd9:/# cd volumedata/dbdataroot@b2e3523a6dd9:/volumedata/dbdata# ls -ltotal 0root@b2e3523a6dd9:/volumedata/dbdata#

在Container外部確認此事volname是否已經創建成功

[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

確認/var/lib/docker/volumes下面 的情況

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# lltotal 0drwxr-xr-x 3 root root 18 Jul 25 06:23 volname[root@host88 volumes]# find . -type f[root@host88 volumes]# find . -type d../volname./volname/_data[root@host88 volumes]#

除了目錄結構沒有任何文件存在

Step 2:在Container中保存數據Hello world

root@b2e3523a6dd9:/volumedata/dbdata# ls -ltotal 0root@b2e3523a6dd9:/volumedata/dbdata# echo "hello, world" >>helloworldroot@b2e3523a6dd9:/volumedata/dbdata# cat helloworldhello, worldroot@b2e3523a6dd9:/volumedata/dbdata# ls -ltotal 4-rw-r--r-- 1 root root 13 Jul 25 06:26 helloworldroot@b2e3523a6dd9:/volumedata/dbdata#

在外部確認該信息是否已經存在

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, world[root@host88 volumes]#

Step 3:在外部直接修改該文件

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, world[root@host88 volumes]# echo "hell, this is `hostname`" >>./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, worldhell, this is host88[root@host88 volumes]#

在內部確認信息

root@b2e3523a6dd9:/volumedata/dbdata# ls -ltotal 4-rw-r--r-- 1 root root 34 Jul 25 06:29 helloworldroot@b2e3523a6dd9:/volumedata/dbdata# cat helloworldhello, worldhell, this is host88root@b2e3523a6dd9:/volumedata/dbdata#

從Container中退出前再追加一條信息

root@b2e3523a6dd9:/volumedata/dbdata# echo "hello, I will exit from `hostname`" >>helloworldroot@b2e3523a6dd9:/volumedata/dbdata# cat helloworldhello, worldhell, this is host88hello, I will exit from b2e3523a6dd9root@b2e3523a6dd9:/volumedata/dbdata#

Step 4:退出Container后看數據是否仍然存在

root@b2e3523a6dd9:/volumedata/dbdata# exitexit[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, worldhell, this is host88hello, I will exit from b2e3523a6dd9[root@host88 volumes]#

數據仍然存在。使用docker volume ls可以看到剛剛volname的數據卷也依然存在。

[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

數據卷的管理

docker的volume的管理目前主要有下面4種:create/ls/inspect/rm

查詢(ls)

[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

正常的環境一定不會跑出這么清靜的結果。

inspect

[root@host88 volumes]# docker volume inspect volname[ {  "Name": "volname",  "Driver": "local",  "Mountpoint": "/var/lib/docker/volumes/volname/_data" }][root@host88 volumes]#

其實這個信息可能會覺得非常眼熟,看完docker insepect 的結果就會發現,內容是一致的,以下是docker inspect b2e3523a6dd9的mounts相關信息

  "Mounts": [   {    "Name": "volname",    "Source": "/var/lib/docker/volumes/volname/_data",    "Destination": "/volumedata/dbdata",    "Driver": "local",    "Mode": "z",    "RW": true,    "Propagation": "rslave"   }  ],

刪除(rm)

刪除之前的確認

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, worldhell, this is host88hello, I will exit from b2e3523a6dd9[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

刪除volume之前需要刪除與其有依賴關系的container

[root@host88 volumes]# docker rm b2e3523a6dd9b2e3523a6dd9[root@host88 volumes]#

刪除container并不會將volume一并刪除

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]#

而使用docker volume rm則會干凈地刪除掉所有信息

[root@host88 volumes]# docker volume rm volnamevolname[root@host88 volumes]# lltotal 0[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAME[root@host88 volumes]#

長時間運行的Docker環境中,成為僵尸的不只是/var/lib/docker/volumes下面的實際數據

而且docker volume ls中也會有很多完全不知道的信息,甚至有些相關聯的實際數據已經被刪除

這種情況在很多考慮不足的環境中屢見不鮮,雖然只是很簡單的helloworld

數據管理時候需要考慮的問題還是值得引起足夠的重視。

創建(create):

可以像例子那樣通過run 和-v創建volume,同時也可以使用docker volume create來創建

[root@host88 volumes]# docker volume create --driver=local --name=volnamevolname[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

有些volume在創建時還要結合使用–opt參數(或者-o)

如果不指定–name參數,docker會體貼地替你取一個,大概就像下面這樣

[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]# docker volume createe54a0022fdff1e0e57b8635317e0b51b1e36c3c9b8c48a051e7778a45f08a83d[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volnamelocal    e54a0022fdff1e0e57b8635317e0b51b1e36c3c9b8c48a051e7778a45f08a83d[root@host88 volumes]#

看著太鬧心了,一下全部刪掉吧。

[root@host88 volumes]# docker volume rm $(docker volume ls -q)volnamee54a0022fdff1e0e57b8635317e0b51b1e36c3c9b8c48a051e7778a45f08a83d[root@host88 volumes]#

需要注意的是這個名字必須是唯一的,所以前面也說到過不使用docker volume rm來刪除的話會導致問題,

下次用同樣名字想要創建一個volume卻發現已經存在的時候就只能是創建失敗了。

多Container共用一個數據卷

Step 1:創建一個Named Volume

用你喜歡的方式創建一個named volume

[root@host88 volumes]# docker volume create --name=volnamevolname[root@host88 volumes]# docker volume lsDRIVER    VOLUME NAMElocal    volname[root@host88 volumes]#

Step 2:路人甲Container與之相連

[root@host88 volumes]# docker run -it -v volname:/volumedata/dbdata debianroot@5a43b6347b53:/#

路人甲使用Debian,他想知道誰是docker的主機

root@5a43b6347b53:/# lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var volumedataroot@5a43b6347b53:/# cd volumedata/dbdataroot@5a43b6347b53:/volumedata/dbdata# ls -ltotal 0root@5a43b6347b53:/volumedata/dbdata# echo "hello, world by `hostname`, who is host?" >> helloworldroot@5a43b6347b53:/volumedata/dbdata# cat helloworldhello, world by 5a43b6347b53, who is host?root@5a43b6347b53:/volumedata/dbdata#

Step 3:主機與路人乙

主機此時看到了這個信息

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, world by 5a43b6347b53, who is host?[root@host88 volumes]#

同時路人乙也與該volume進行了連接

[root@host88 ~]# docker run -it -v volname:/volumedata/dbdata centos[root@6365668cea55 /]#

BTW,Docker現在不能使用相對路徑,所以volname:/volumedata/dbdata的這個寫法最前面的/仍然是不可或缺.
路人乙說雖然你不是找我,但是我看見了,這是共享的,我就可以回信么,說我不知道。

[root@6365668cea55 dbdata]# ls -ltotal 4-rw-r--r-- 1 root root 43 Jul 25 09:36 helloworld[root@6365668cea55 dbdata]# cat helloworldhello, world by 5a43b6347b53, who is host?[root@6365668cea55 dbdata]# echo "hello, world by `hostname`, I do not know" >> helloworld[root@6365668cea55 dbdata]# cat helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not know[root@6365668cea55 dbdata]#

Step 4:主機與路人丙

主機什么時候都能看見信息的更新,作為應該回郵件的人,完全有權利裝作看不見

[root@host88 volumes]# pwd/var/lib/docker/volumes[root@host88 volumes]# lltotal 0drwxr-xr-x 3 root root 18 Jul 25 05:31 volname[root@host88 volumes]# find . -type f./volname/_data/helloworld[root@host88 volumes]# cat ./volname/_data/helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not know[root@host88 volumes]#

路人丙使用ubuntu,他覺得這樣數據設計地實在不好,他表示他根本不想看到這樣的信息,大家不要再reply to all

[root@host88 ~]# docker run -it -v volname:/volumedata/dbdata ubunturoot@730209b03ea6:/# cd volumedata/dbdataroot@730209b03ea6:/volumedata/dbdata# ls -ltotal 4-rw-r--r-- 1 root root 87 Jul 25 09:44 helloworldroot@730209b03ea6:/volumedata/dbdata# cat helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not knowroot@730209b03ea6:/volumedata/dbdata# echo "hello, world by `hostname`, please do not reply to all" >> helloworldroot@730209b03ea6:/volumedata/dbdata# cat helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not knowhello, world by 730209b03ea6, please do not reply to allroot@730209b03ea6:/volumedata/dbdata#

Step 5:大家都看到了信息,決定都不再說話

作為和現實世界相反的期待,大家覺得這實在太無聊了,于是沒有人再不斷跳出來Reply all說請把我從mail link中剔除

[root@6365668cea55 dbdata]# cat helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not knowhello, world by 730209b03ea6, please do not reply to all[root@6365668cea55 dbdata]#
root@5a43b6347b53:/volumedata/dbdata# cat helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not knowhello, world by 730209b03ea6, please do not reply to allroot@5a43b6347b53:/volumedata/dbdata#
[root@host88 volumes]# cat ./volname/_data/helloworldhello, world by 5a43b6347b53, who is host?hello, world by 6365668cea55, I do not knowhello, world by 730209b03ea6, please do not reply to all[root@host88 volumes]#

實際多Container使用同一個Volume完全可以做的更好,把讀寫的權限進行合理設定,能夠滿足很多實際的場景。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
尤物九九久久国产精品的分类| 欧美一级淫片videoshd| 中文字幕综合在线| 亚洲男女自偷自拍图片另类| 免费不卡欧美自拍视频| 日本精品一区二区三区在线播放视频| 中文字幕日韩综合av| 国产91av在线| 国产性色av一区二区| 日本欧美一级片| 久久久黄色av| 欧美精品少妇videofree| 欧美性猛交99久久久久99按摩| 欧美网站在线观看| 韩剧1988在线观看免费完整版| 日韩欧美有码在线| 中文字幕在线精品| 国产日韩欧美黄色| 久久精品国亚洲| 亚洲精品国产成人| 欧美精品18videos性欧美| 性欧美xxxx视频在线观看| 欧美一级在线亚洲天堂| 欧美伊久线香蕉线新在线| xxxxxxxxx欧美| 日韩大胆人体377p| 91精品国产自产在线老师啪| 精品国产91乱高清在线观看| 久久av红桃一区二区小说| 欧美老女人性生活| 国产精品成熟老女人| 国产精品入口夜色视频大尺度| 欧美黑人性猛交| 欧美一级大片在线免费观看| 亚洲色图综合久久| 中文字幕在线国产精品| 黄色精品一区二区| 欧美日本国产在线| 国产精自产拍久久久久久| 国产精品中文在线| 日韩在线不卡视频| 欧美综合在线观看| 成人疯狂猛交xxx| 国产精品视频永久免费播放| 黄色精品一区二区| 久久国产精品99国产精| 狠狠躁夜夜躁人人爽天天天天97| 亚洲一区制服诱惑| 成人国产在线激情| 色黄久久久久久| 亚洲综合小说区| 欧美成年人视频网站| 日韩中文字幕视频在线观看| 日韩在线观看你懂的| 亚洲一品av免费观看| 国产欧美久久久久久| 久久亚洲电影天堂| 91精品国产综合久久久久久久久| 91久久精品视频| 国产精品日韩欧美大师| 日韩在线观看精品| 国产成人精品国内自产拍免费看| 欧美小视频在线| 成人国产亚洲精品a区天堂华泰| 亚洲国产精品久久91精品| 亚洲福利视频久久| 国产一区二区在线播放| 国产成人精品视频在线观看| 国产精品18久久久久久首页狼| 日韩一区二区精品视频| 2020欧美日韩在线视频| 成人av资源在线播放| 亚洲伦理中文字幕| 国产欧美精品久久久| 久久免费观看视频| 九九久久国产精品| 伊人一区二区三区久久精品| 北条麻妃一区二区在线观看| 国产99久久久欧美黑人| 亚洲成人xxx| 韩国日本不卡在线| 视频直播国产精品| 亚洲精品在线视频| 久久激情视频久久| 日韩在线观看视频免费| 国产啪精品视频| 成人精品网站在线观看| 国产一区二区三区精品久久久| 欧美性猛交99久久久久99按摩| 国产精品白嫩初高中害羞小美女| 亚洲色无码播放| 日韩精品日韩在线观看| 国产精品视频色| 成人免费网站在线| 久久亚洲欧美日韩精品专区| 欧美综合第一页| 日韩在线观看免费高清完整版| 97国产在线视频| 日韩成人中文字幕| 高清视频欧美一级| 国产精品视频一区二区三区四| 久久久日本电影| 成人国产精品免费视频| 国产日韩在线视频| 亚洲国产欧美自拍| 欧美理论在线观看| 国产精品久久久久一区二区| 欧美一区二区三区……| 精品一区二区三区四区| 超碰日本道色综合久久综合| 国产精品都在这里| 91影视免费在线观看| 亚洲在线第一页| 国产精品视频公开费视频| 成人免费大片黄在线播放| 久久精品国产免费观看| 色阁综合伊人av| 国产精品福利网| 亚洲人成在线观看网站高清| 久久精品久久久久久国产 免费| 日韩中文字幕在线精品| 亚洲免费精彩视频| 91极品视频在线| 国产综合在线看| 国产欧美一区二区三区在线| 亚洲欧美日韩久久久久久| 国产一区在线播放| 成人av色在线观看| 欧美巨猛xxxx猛交黑人97人| 亚洲成人av在线| 久久精品国产欧美亚洲人人爽| 亚洲free性xxxx护士hd| 欧美午夜女人视频在线| 日韩的一区二区| 欧美极品少妇全裸体| 亚洲福利小视频| 亚洲а∨天堂久久精品喷水| 91香蕉嫩草影院入口| 91免费福利视频| 欧美国产精品日韩| 欧美疯狂xxxx大交乱88av| 成人精品网站在线观看| 97在线观看免费高清| 久久免费视频网| 亚洲精品电影在线观看| 色综合天天狠天天透天天伊人| 国产精品久久久久久久久影视| 欧美精品videosex极品1| 一区二区三欧美| 亚洲国产成人久久综合一区| 97色在线视频观看| 日韩精品一二三四区| 亚洲一区免费网站| 日韩av电影在线网| 久久91亚洲精品中文字幕奶水| 欧美俄罗斯性视频| 亚洲精品一区二区在线| 亚洲国产精彩中文乱码av在线播放| 国内精品国产三级国产在线专| 国产极品精品在线观看| 亚洲美女中文字幕| 成人网欧美在线视频| 在线观看久久久久久| 国产xxx69麻豆国语对白|