Docker系列五:容器的存儲

容器的存儲

1.容器內(nèi)部掛載和使用宿主機(jī)的存儲卷砌滞。掛載到一個容器的卷也可以讓其他容器使用晴楔。
2.Docker自身會使用宿主機(jī)的一個存儲區(qū)來管理該宿主機(jī)上Docker鏡像和容器泻骤。

討論保證數(shù)據(jù)持久性的幾種模式:

  • 默認(rèn)模式:不支持任何持久性
  • 數(shù)據(jù)卷:容器持久性
  • 僅含數(shù)據(jù)的容器:容器持久性
  • 從主機(jī)映射而得的卷:容器持久性
  • 從主機(jī)映射而得的卷限书,存儲后端是共享存儲:主機(jī)持久性
  • Convoy 卷插件:主機(jī)持久性

上述幾種持久性(我自己發(fā)明的)是什么意思呢奇瘦?

  • 容器持久性:升級容器并不會移除數(shù)據(jù)
  • 主機(jī)持久性:主機(jī)失效也不會引起數(shù)據(jù)丟失

http://dockone.io/article/1283

數(shù)據(jù)卷

數(shù)據(jù)卷是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS验靡,可以提供很多有用的特性:

  • 數(shù)據(jù)卷可以在容器之間共享和重用
  • 對數(shù)據(jù)卷的修改會立馬生效
  • 對數(shù)據(jù)卷的更新倍宾,不會影響鏡像
  • 數(shù)據(jù)卷默認(rèn)會一直存在,即使容器被刪除

注意:數(shù)據(jù)卷的使用胜嗓,類似于 Linux 下對目錄或文件進(jìn)行 mount高职,鏡像中的被指定為掛載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數(shù)據(jù)卷辞州。

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

創(chuàng)建一個名為 web 的容器怔锌,并加載一個數(shù)據(jù)卷到容器的 /webapp 目錄。

docker run -d -P --name web -v /webapp webapp

刪除數(shù)據(jù)卷

數(shù)據(jù)卷是被設(shè)計用來持久化數(shù)據(jù)的变过,它的生命周期獨立于容器埃元,Docker不會在容器被刪除后自動刪除數(shù)據(jù)卷,并且也不存在垃圾回收這樣的機(jī)制來處理沒有任何容器引用的數(shù)據(jù)卷媚狰。如果需要在刪除容器的同時移除數(shù)據(jù)卷岛杀。可以在刪除容器的時候使用 docker rm -v

掛載主機(jī)目錄作為數(shù)據(jù)卷

使用 -v 標(biāo)記也可以指定掛載一個本地主機(jī)的目錄到容器中去崭孤。

docker run -d -P --name web -v /src/webapp:/opt/webapp webapp

Docker 掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫类嗤,用戶也可以通過 :ro 指定為只讀。

docker run -d -P --name web -v /src/webapp:/opt/webapp:ro webapp

注意:Dockerfile 中不支持這種用法辨宠,這是因為 Dockerfile 是為了移植和分享用的土浸。然而,不同操作系統(tǒng)的路徑格式不一樣彭羹,所以目前還不能支持黄伊。

查看數(shù)據(jù)卷的具體信息

docker inspect --format "{{json .Mounts }}" dock_registry_1

掛載一個本地主機(jī)文件作為數(shù)據(jù)卷

記錄在容器輸入過的命令

sudo docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

注意:如果直接掛載一個文件,很多文件編輯工具派殷,包括 vi 或者 sed --inplace 还最,可能會造成文件 inode 的改變,從 Docker 1.1.0起毡惜,這會導(dǎo)致報錯誤信息拓轻。所以最簡單的辦法就直接掛載文件的父目錄。

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

如果你有一些持續(xù)更新的數(shù)據(jù)需要在容器之間共享经伙,最好創(chuàng)建數(shù)據(jù)卷容器扶叉。
數(shù)據(jù)卷容器勿锅,其實就是一個正常的容器,專門用來提供數(shù)據(jù)卷供其它容器掛載的枣氧。

首先溢十,創(chuàng)建一個名為 webapp_code 的數(shù)據(jù)卷容器

docker run -d -v /webapp --name webapp_code centos

在其他容器中使用 --volumes-from 來掛載 webapp_code 容器中的數(shù)據(jù)卷。--volumes-from支持級聯(lián)掛載达吞。

docker run -it --volumes-from webapp_code --name webapp_1 centos /bin/bash
docker run -it --volumes-from webapp_1 --name webapp_2 centos /bin/bash

數(shù)據(jù)卷的容器自己并不需要保持在運行狀態(tài)张弛。

借助于容器進(jìn)行數(shù)據(jù)恢復(fù)

備份

image.png

首先使用 --volumes-from 標(biāo)記來創(chuàng)建一個加載 database 容器卷容器,并從主機(jī)掛載當(dāng)前目錄到容器的 /backup 目錄酪劫。命令如下:

docker run -d --volumes-from webapp_code -v $(pwd):/backup --name backup centos tar cf /backup/webapp.tar /webapp

容器啟動后吞鸭,使用了 tar 命令來將 database 卷備份為容器中 /backup/backup.tar.gz文件,也就是主機(jī)當(dāng)前目錄下的名為 backup.tar 的文件覆糟。

此處為何不直接從數(shù)據(jù)卷容器備份文件呢刻剥?
數(shù)據(jù)卷容器無法再次掛載用來備份的數(shù)據(jù)卷,所以只能將數(shù)據(jù)卷容器掛載到新的容器的同時掛載用來備份的數(shù)據(jù)卷滩字,將備份文件備份到本地的文件系統(tǒng)中造虏。

備份到本地后,直接解壓踢械,啟動新的數(shù)據(jù)卷容器時將解壓后的內(nèi)容直接掛載到新的數(shù)據(jù)卷容器中酗电。

為何不直接從本地文件系統(tǒng)備份數(shù)據(jù)卷容器中的內(nèi)容魄藕?

恢復(fù)

如果要恢復(fù)數(shù)據(jù)到一個容器内列,首先創(chuàng)建一個帶有空數(shù)據(jù)卷容器 dbdata2。

docker run -d -v /webapp --name new_webapp_code centos

然后創(chuàng)建另一個容器(這個容器只作為解壓使用)背率,掛載 dbdata2 容器卷中的數(shù)據(jù)卷话瞧,并使用 untar 解壓備份文件到掛載的容器卷中。

docker run -it --volumes-from new_webapp_code -v $(pwd):/backup --name temp_data centos tar xf /backup/webapp.tar

為了查看/驗證恢復(fù)的數(shù)據(jù)寝姿,可以再啟動一個容器掛載同樣的容器卷來查看

docker run -it --volumes-from new_webapp_code centos /bin/bash

使用文件系統(tǒng)進(jìn)行數(shù)據(jù)恢復(fù)

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

創(chuàng)建時掛載本地的文件目錄

docker run -d -v /webapp:/webapp --name webapp_code centos

在其他容器中使用 --volumes-from 來掛載 webapp_code 容器中的數(shù)據(jù)卷交排。--volumes-from支持級聯(lián)掛載。

docker run -it --volumes-from webapp_code --name webapp_1 centos /bin/bash
docker run -it --volumes-from webapp_1 --name webapp_2 centos /bin/bash

本地文件系統(tǒng)備份

cp /webapp /webapp_backup

創(chuàng)建新的數(shù)據(jù)卷容器

docker run -d -v /webapp_backup:/webapp --name webapp_code centos

清理容器

docker將其數(shù)據(jù)保存在/var/lib/docker/目錄結(jié)構(gòu)中饵筑,需要確保該目錄有足夠的磁盤空間埃篓。

[root@localhost text]# df -h /var/lib/docker/
文件系統(tǒng)                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   50G   17G   34G   34% /

刪除無用鏡像

docker image ls

精確一點搜索,鏡像的唯一標(biāo)識是 ID 和摘要根资,而一個鏡像可以有多個標(biāo)簽架专。
進(jìn)行鏡像刪除docker rmi (IMAGE ID)

刪除容器并進(jìn)行回收

注意刪除前需要對容器進(jìn)行打包備份

docker ps查看正在運行或暫停的容器,這里面的是無法進(jìn)行容器刪除的
docker ps -a里面已經(jīng)停止的容器可以進(jìn)行刪除
刪除容器命令docker rm CONTAINER ID

實際運維過程需要節(jié)省空間
https://blog.fundebug.com/2017/04/19/docker-system-explain/
https://blog.fundebug.com/2018/01/10/how-to-clean-docker-disk/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玄帕,一起剝皮案震驚了整個濱河市部脚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裤纹,老刑警劉巖委刘,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡锡移,警方通過查閱死者的電腦和手機(jī)呕童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來罩抗,“玉大人拉庵,你說我怎么就攤上這事√椎伲” “怎么了钞支?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長操刀。 經(jīng)常有香客問我烁挟,道長,這世上最難降的妖魔是什么骨坑? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任撼嗓,我火速辦了婚禮,結(jié)果婚禮上欢唾,老公的妹妹穿的比我還像新娘且警。我一直安慰自己,他們只是感情好礁遣,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布斑芜。 她就那樣靜靜地躺著,像睡著了一般祟霍。 火紅的嫁衣襯著肌膚如雪杏头。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天沸呐,我揣著相機(jī)與錄音醇王,去河邊找鬼。 笑死崭添,一個胖子當(dāng)著我的面吹牛寓娩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呼渣,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼棘伴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了徙邻?” 一聲冷哼從身側(cè)響起排嫌,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缰犁,沒想到半個月后淳地,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怖糊,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年颇象,在試婚紗的時候發(fā)現(xiàn)自己被綠了伍伤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡遣钳,死狀恐怖扰魂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蕴茴,我是刑警寧澤劝评,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站倦淀,受9級特大地震影響蒋畜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撞叽,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一姻成、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愿棋,春花似錦科展、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至见秤,卻和暖如春砂竖,著一層夾襖步出監(jiān)牢的瞬間真椿,已是汗流浹背鹃答。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留突硝,地道東北人测摔。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像解恰,于是被迫代替她去往敵國和親锋八。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容