Docker數(shù)據(jù)管理

容器中的管理數(shù)據(jù)主要有兩種方式:

  • 數(shù)據(jù)卷(Data Volumes): 容器內(nèi)數(shù)據(jù)直接映射到本地主機環(huán)境;
  • 數(shù)據(jù)卷容器(Data Volume Containers): 使用特定容器維護數(shù)據(jù)卷。

1.數(shù)據(jù)卷

數(shù)據(jù)卷(Data Volumes)是一個可供容器使用的特殊目錄,它將主機操作系統(tǒng)目錄直接
映射進容器除盏,類似于Linux中的mount行為芦拿。

數(shù)據(jù)卷可以提供很多有用的特性:

  • 數(shù)據(jù)卷可以在容器之間共事和重用,容器間傳遞數(shù)據(jù)將變得高效與方便帘营;
  • 對數(shù)據(jù)卷內(nèi)數(shù)據(jù)的修改會立馬生效图谷,無論是容器內(nèi)操作還是本地操作翩活;
  • 對數(shù)據(jù)卷的更新不會影響鏡像,解摘開應用和數(shù)據(jù)
  • 卷會一直存在便贵,直到?jīng)]有容器使用菠镇,可以安全地卸載它

1.1 創(chuàng)建數(shù)據(jù)卷

創(chuàng)建命令:

docker volume create -d local test

-d的意思是:Specify volume driver name (default "local")

此時,查看/var/lib/docker/volumes 路徑下承璃,會發(fā)現(xiàn)所創(chuàng)建的數(shù)據(jù)卷位置:

[root@localhost ~]# ll /var/lib/docker/volumes/   
total 24
-rw-------. 1 root root 32768 Jul 22 17:59 metadata.db
drwxr-xr-x. 3 root root    19 Jul 22 17:59 test

# metadata.db是一個volumes的元數(shù)據(jù)庫文件利耍,不用管它

查看數(shù)據(jù)卷的詳細信息:

[root@localhost ~]# docker volume inspect test  
[
    {
        "CreatedAt": "2019-07-22T17:59:37+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/test/_data",
        "Name": "test",
        "Options": {},
        "Scope": "local"
    }
]

volume除了以上介紹的子命令外,還有l(wèi)s(列出已有數(shù)據(jù)卷)盔粹、prune(清理無用數(shù)據(jù)卷)隘梨、rm(刪除數(shù)據(jù)卷)等。

1.2 綁定數(shù)據(jù)卷

除了使用 volume 子命令來管理數(shù)據(jù)卷外舷嗡,還可以在創(chuàng)建容器時將主機本地的任意路徑掛載到容器內(nèi)作為數(shù)據(jù)卷轴猎,這種形式創(chuàng)建的數(shù)據(jù)卷稱為綁定數(shù)據(jù)卷。

在用docker [container] run命令的時候进萄,可以使用-mount選項來使用數(shù)據(jù)卷捻脖。

-mount選項支持三種類型的數(shù)據(jù)卷烦秩,包括:

  • volume:普通數(shù)據(jù)卷,映射到主機/var/lib/docker/volumes路徑下郎仆;
  • bind:綁定數(shù)據(jù)卷,映射到主機指定路徑下兜蠕;
  • tmpfs:臨時數(shù)據(jù)卷扰肌,只存在于內(nèi)存中。

下面演示這三種操作示例:

1.2.1 volume

1.創(chuàng)建一個數(shù)據(jù)卷

docker volume create -d local test

2.啟動容器熊杨,并綁定該數(shù)據(jù)卷:

docker run -it --mount type=volume,source=test,destination=/opt centos /bin/bash

該命令可以簡寫為(老版寫法):
docker run -it -v test:/opt centos /bin/bash

3.在容器內(nèi)部創(chuàng)建一個文件曙旭,并編輯信息:

[root@3a99d6382de8 /]# cd /opt/                                                        
[root@3a99d6382de8 opt]# echo hello >> a.txt 
[root@3a99d6382de8 opt]# cat a.txt 
hello

4.在本地操作系統(tǒng)查看該路徑的變化:/var/lib/docker/volumes/test/_data

[root@localhost _data]# cd /var/lib/docker/volumes/test/_data/
[root@localhost _data]# ls
a.txt
[root@localhost _data]# cat a.txt 
hello

5.在本地操作系統(tǒng)/var/lib/docker/volumes/test/_data路徑下創(chuàng)建一個文件,并編輯信息:

[root@localhost _data]# echo docker >> b.txt
[root@localhost _data]# cat b.txt 
docker
[root@localhost _data]# ls
a.txt  b.txt

6.進入到docker容器中晶府,查看/opt:

[root@3a99d6382de8 opt]# ls
a.txt  b.txt
[root@3a99d6382de8 opt]# cat b.txt 
docker

該示例說明了:本地操作系統(tǒng)數(shù)據(jù)卷和容器內(nèi)的數(shù)據(jù)掛載點是雙向互通聯(lián)動的桂躏,一端改動另一端也會跟著改動。

1.2.2 bind

1.啟動容器川陆,并與主機某個目錄綁定:

docker run -it --mount type=bind,source=/opt/data/test,destination=/opt centos /bin/bash

該命令可以簡寫為(老版寫法):
docker run -it -v /opt/data/test:/opt centos /bin/bash

注意:/opt/data/test必需要先創(chuàng)建好剂习。

  1. 在容器/opt目錄下創(chuàng)建文件,并編輯內(nèi)容:
[root@a6f3b85a996e /]# cd /opt/
[root@a6f3b85a996e opt]# echo hello >> a.txt 
[root@a6f3b85a996e opt]# cat a.txt 
hello
  1. 在主機/opt/data/test路徑進行查看:
[root@localhost test]# cd /opt/data/test/ && ll
total 4
-rw-r--r--. 1 root root 6 Jul 22 18:35 a.txt
[root@localhost test]# cat a.txt 
hello
  1. 在主機/opt/data/test路徑創(chuàng)建文件较沪,并編輯內(nèi)容:
[root@localhost test]# echo docker >> b.txt
[root@localhost test]# ls
a.txt  b.txt
  1. 在容器/opt目錄下進行查看:
[root@a6f3b85a996e opt]# ls   
a.txt  b.txt
[root@a6f3b85a996e opt]# cat b.txt 
docker

該示例說明了:本地操作系統(tǒng)數(shù)據(jù)目錄和容器內(nèi)的數(shù)據(jù)掛載點是雙向互通聯(lián)動的鳞绕,一端改動另一端也會跟著改動。

1.2.3 tmpfs

2.數(shù)據(jù)卷容器

如果用戶需要在多個容器之間共享一些持續(xù)更新的數(shù)據(jù)尸曼,最簡單的方式是使用數(shù)據(jù)卷容器们何。數(shù)據(jù)卷容器也是一個容器,但是它的目的是專門提供數(shù)據(jù)卷給其他容器掛載控轿。

  1. 創(chuàng)建一個數(shù)據(jù)卷容器冤竹,并在啟動創(chuàng)建數(shù)據(jù)卷掛載到/opt/data:
docker run -it -v /opt/data --name data-volume --hostname data-volume centos

此處的/opt/data指的是容器內(nèi)的掛載點,不是主機的茬射。

  1. 可以在其他容器啟動時使用--volumes-from來掛載data-volume容器中的數(shù)據(jù)卷鹦蠕,例如:
docker run -it --volumes-from data-volume --name web --hostname web centos
  1. 在web容器的/opt/data目錄下新建文件,并編輯內(nèi)容:
[root@web /]# cd /opt/data/                                   
[root@web data]# echo hello >> a.txt
[root@web data]# cat a.txt 
hello
  1. 在數(shù)據(jù)卷容器的/opt/data目錄下進行查看:
[root@data-volume data]# cd /opt/data/ && ls
a.txt
[root@data-volume data]# cat a.txt 
hello
  1. 在數(shù)據(jù)卷容器的/opt/data目錄下新建文件躲株,并編輯內(nèi)容:
[root@data-volume data]# echo docker >> b.txt 
[root@data-volume data]# ls
a.txt  b.txt
  1. 在web容器的/opt/data目錄下進行查看:
[root@web data]# ls   
a.txt  b.txt
[root@web data]# cat b.txt 
docker

該示例說明了:數(shù)據(jù)卷容器和使用該數(shù)據(jù)卷容器的容器的數(shù)據(jù)掛載點是雙向互通聯(lián)動的片部,一端改動另一端也會跟著改動。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霜定,一起剝皮案震驚了整個濱河市档悠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌望浩,老刑警劉巖辖所,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異磨德,居然都是意外死亡缘回,警方通過查閱死者的電腦和手機吆视,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酥宴,“玉大人啦吧,你說我怎么就攤上這事∽竟眩” “怎么了授滓?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肆糕。 經(jīng)常有香客問我般堆,道長,這世上最難降的妖魔是什么诚啃? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任淮摔,我火速辦了婚禮,結(jié)果婚禮上始赎,老公的妹妹穿的比我還像新娘和橙。我一直安慰自己,他們只是感情好造垛,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布胃碾。 她就那樣靜靜地躺著,像睡著了一般筋搏。 火紅的嫁衣襯著肌膚如雪仆百。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天奔脐,我揣著相機與錄音俄周,去河邊找鬼。 笑死髓迎,一個胖子當著我的面吹牛峦朗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播排龄,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼波势,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了橄维?” 一聲冷哼從身側(cè)響起尺铣,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎争舞,沒想到半個月后凛忿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡竞川,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年店溢,在試婚紗的時候發(fā)現(xiàn)自己被綠了叁熔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡床牧,死狀恐怖荣回,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戈咳,我是刑警寧澤驹马,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站除秀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏算利。R本人自食惡果不足惜册踩,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望效拭。 院中可真熱鬧暂吉,春花似錦、人聲如沸缎患。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挤渔。三九已至肮街,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間判导,已是汗流浹背嫉父。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眼刃,地道東北人绕辖。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像擂红,于是被迫代替她去往敵國和親仪际。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355