日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

docker 和挂载文件一起打包成新镜像_Docker文件系统和数据卷

發(fā)布時間:2024/9/27 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 和挂载文件一起打包成新镜像_Docker文件系统和数据卷 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分層結(jié)構(gòu)

當(dāng)容器啟動時,一個新的可寫層被加載到鏡像的頂部。

這一層通常被稱作“容器層”,“容器層”之下的都叫

“鏡像層”。所有對容器的改動 - 無論添加、刪除、還

是修改文件都只會發(fā)生在容器層中。只有容器層是可寫

的,容器層下面的所有鏡像層都是只讀的.鏡像層數(shù)量可能會很多,所有鏡像層會聯(lián)合在一起組成一個統(tǒng)一的文件系統(tǒng)。

OverlayFS

OverlayFS是一個現(xiàn)代聯(lián)合文件系統(tǒng),實現(xiàn)更快,更簡單。

Docker為OverlayFS提供了存儲驅(qū)動程序 --overlay和overlay2

通過docker info 命令可以看到當(dāng)前系統(tǒng)使用的存儲驅(qū)動為

容器的讀寫

對于讀,考慮下列3種場景:

讀的文件不在容器層:如果讀的文件不在容器層,則從鏡像層進(jìn)行讀

讀的文件只存在在容器層:直接從容器層讀

讀的文件在容器層和鏡像層:讀容器層中的文件,因為容器層隱藏了鏡像層同名的文件(上層覆蓋底層)

對于寫,考慮下列場景:

寫的文件不在容器層,在鏡像層:由于文件不在容器層,因此overlay/overlay2存儲驅(qū)動使用copy_up操作從鏡像層拷

貝文件到容器層,然后將寫入的內(nèi)容寫入到文件新的拷貝中。

刪除文件和目錄:刪除鏡像層的文件,會在容器層創(chuàng)建一個whiteout文件來隱藏它;刪除鏡像層的目錄,會創(chuàng)建

opaque目錄,它和whiteout文件有相同的效果

通過對容器的讀寫操作,來舉例說明

將修改后的容器提交為鏡像

將現(xiàn)有容器生成新的鏡像,

docker命令為:docker commit -m ”提交信息” 容器ID 鏡像名稱:tag名稱。

生成的鏡像如上圖

通過docker inspect 命令查看新鏡像信息,在之前的鏡像上增加了一層鏡像

修改dockerfile文件查看鏡像

1、只修改了最后一步,所以鏡像依賴基本不變,只是頂層鏡像文件改變 echo “mmm” > mm.txt

2、而當(dāng)中間插入一步時(mkdir /data2),只有最底層的鏡像文件沒變,后面的都變掉了,因為后面的依賴的文件改變了,其實相同的命令產(chǎn)生的鏡像,diff中的文件還是相同的

數(shù)據(jù)卷-VOLUME

Docker中的數(shù)據(jù)可以存儲在類似于虛擬機(jī)磁盤的介質(zhì)中,稱為數(shù)據(jù)卷(Data Volume)。

數(shù)據(jù)卷可以用來存儲Docker應(yīng)用的數(shù)據(jù),也可以用來在Docker容器間進(jìn)行數(shù)據(jù)共享。數(shù)據(jù)卷呈現(xiàn)給Docker容器的形式就是一個目錄,支持多個容器間共享,修改也不會影響鏡像。使用Docker的數(shù)據(jù)卷,類似在系統(tǒng)中使用 mount 掛載一個文件系統(tǒng)

創(chuàng)建數(shù)據(jù)卷,三種方式:

1、在dockerfile中通過VOLUME指令來增加一個或者多個數(shù)據(jù)卷

2、docker run命令后面跟上-v參數(shù)即可創(chuàng)建一個數(shù)據(jù)卷,當(dāng)然也可以跟多個-v參數(shù)來創(chuàng) 建多個數(shù)據(jù)卷

3、docker volume create volume_name 命令先創(chuàng)建一個數(shù)據(jù)卷

1、通過dockerfile創(chuàng)建數(shù)據(jù)卷 VOLUME[“/data1”,”/data2”]

生成的數(shù)據(jù)卷保存在 /var/lib/docker/volumes目錄下

鏡像生成不會是數(shù)據(jù)卷生成

只有容器啟動時才會生成數(shù)據(jù)卷(docker run –it –name=“volume1” 鏡像ID)

2、docker run –it –v /data3 –name=“volume2” 鏡像ID

相對于1來說,會生成新的數(shù)據(jù)卷

以上兩種方式的數(shù)據(jù)卷名稱是系統(tǒng)默認(rèn)名稱

3、創(chuàng)建好數(shù)據(jù)卷之后

可以指定數(shù)據(jù)卷名稱掛載容器目錄 – docker run –it –v volume_name:/data4 –name=“volume4” 鏡像ID

當(dāng)創(chuàng)建好帶有數(shù)據(jù)卷的容器后,就可以在其他容器中通過--volumes-froms參數(shù)來掛載該數(shù)據(jù)卷了,不管該容器是否運(yùn)行。

停止上面新創(chuàng)的容器(docker ps –a|grep 容器名稱 來查看容器狀態(tài))

掛載前一容器的數(shù)據(jù)卷 – docker run –it –volumes-from 容器ID --name=“volume3” 鏡像ID

與前一容器的數(shù)據(jù)卷路徑相同 – docker inspect 查看

容器間實現(xiàn)了數(shù)據(jù)共享 -- 修改volume3中的數(shù)據(jù),volume2中出現(xiàn)了同樣的數(shù)據(jù)

即使刪除了剛開始的第一個數(shù)據(jù)卷容器,只要有其他容器使用數(shù)據(jù)卷,數(shù)據(jù)卷都不會被刪除的

刪除創(chuàng)建數(shù)據(jù)卷的容器 -- volume2

volume3中數(shù)據(jù)卷并沒有被刪除,因為還有容器掛載在該數(shù)據(jù)卷中

刪除volume3容器,/var/lib/docker/volumes中的數(shù)據(jù)卷也不會刪除,只是沒有辦法被容器所引用,因為掛載它的容器都被刪除了。

查看所有數(shù)據(jù)卷 docker volume ls

刪除需要用docker volume rm 卷名,如果還有容器掛載了該數(shù)據(jù)卷,那么刪除會報錯

也可以把一個本地主機(jī)的目錄當(dāng)做數(shù)據(jù)卷掛載在容器上,同樣是在docker run后面跟-v參數(shù),不過-v后面跟的不再是單獨(dú)的目錄了,它是[host-dir]:[container-dir]:[rw|ro]這樣格式的,host-dir是一個絕對路徑的地址。

運(yùn)行一個容器,以讀寫方式掛載宿主機(jī)上的/data1/www/fjh目錄–-

docker run –it --name=“volume5”–v /data1/www/fjh:/data/fjh(:rw 默認(rèn)) 鏡像ID

查看啟動的容器中獲得了宿主機(jī)的目錄,并向其中添加文件

數(shù)據(jù)與宿主機(jī)之間進(jìn)行了共享

查看數(shù)據(jù)卷中并沒有生成新的文件夾,說明不是生成docker的數(shù)據(jù)卷,而是將宿主機(jī)上的目錄當(dāng)成了數(shù)據(jù)卷

當(dāng)刪除容器后,修改保留在了宿主機(jī)上

當(dāng)運(yùn)行一個容器時,掛載了宿主機(jī)上一個不存在的目錄時,容器和宿主機(jī)同時回新增這個目錄,并將容器的內(nèi)容同步進(jìn)宿主機(jī)

如果host-dir存在,但是指向的是一個不存在的目錄,則docker也會創(chuàng)建該目錄,然后使用該目錄做數(shù)據(jù)源。

如果host-dir不存在,則docker會創(chuàng)建一個新的數(shù)據(jù)卷,

如果 host-dir和docker中的目錄都存在,則宿主機(jī)上的目錄會把docker中的目錄給覆蓋

備份數(shù)據(jù)卷的內(nèi)容的方法可以是創(chuàng)建一個新容器,掛載數(shù)據(jù)卷容器,同時掛載一個本地目錄,然后把數(shù)據(jù)卷容器的數(shù)據(jù)卷通過備份命令備份到映射的本地目錄里面。

將容器volume2掛載的數(shù)據(jù)卷的數(shù)據(jù)內(nèi)容同步到宿主機(jī) --

docker run –rm –volumes-from=volume2 –name=“volume8” -v /data/www/fjh3:/fjh3:rw 鏡像ID cp –rf /data1 /fjh3

啟動一個新的容器并且從volume2容器中掛載卷,然后掛載主機(jī)/data1/www/fjh3目錄到容器中的/fjh3目錄,并將數(shù)據(jù)卷中的/data1 目錄中的數(shù)據(jù)拷貝到/fjh3中,那么數(shù)據(jù)卷中的內(nèi)容就同步到宿主機(jī)中去了,并且執(zhí)行完之后把該容器刪除。

Docker Volume數(shù)據(jù)卷的優(yōu)點:

1)繞過“拷貝寫”系統(tǒng),會直接改變宿主機(jī)上的數(shù)據(jù)卷中的內(nèi)容,且有些文件不需要在docker commit打包進(jìn)鏡像文件。

2)數(shù)據(jù)卷可以在容器間共享和重用數(shù)據(jù)

3)數(shù)據(jù)卷可以在宿主和容器間共享數(shù)據(jù)

4)數(shù)據(jù)卷是持續(xù)性的,直到?jīng)]有容器使用它們。

總結(jié)

以上是生活随笔為你收集整理的docker 和挂载文件一起打包成新镜像_Docker文件系统和数据卷的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一级欧美一级日韩片 | 亚洲毛片儿 | 色乱码一区二区三在线看 | 日韩在线第二页 | 香蕉国产在线观看 | 青青伊人精品 | 国产影视一区二区三区 | 国产午夜精品一区二区三区嫩草 | 亚洲综合小说 | 久热精品在线观看视频 | 欧美黄视频在线观看 | 日韩成人福利 | 久操不卡 | 色综合天天综合 | 天天摸天天干 | 少妇av网 | 99国产视频在线 | 亚洲一区二区三区激情 | 国产精品超碰 | 打白嫩屁屁网站视频短裙 | 色人阁五月天 | 日本高清视频一区二区 | 久久久久亚洲精品 | 深夜的私人秘书 | 亚洲第一视频在线播放 | 日韩r级电影在线观看 | 欧美久久久久久久久久久 | 免费看成人毛片 | 久久久久三级 | 性囗交免费视频观看 | 传媒一区二区 | 女18毛片| 天天操夜夜操 | 亚洲av综合永久无码精品天堂 | 一区二区精品视频在线观看 | 免费又黄又爽又猛大片午夜 | 日本打屁股网站 | japanese24hdxxxx中文字幕 | 亚洲精品麻豆 | 超碰在线人 | 黄色国产在线观看 | 99免费视频 | 中国新婚夫妻性猛交 | 国产无限制自拍 | 亚洲hh | 欧美精品日韩少妇 | 中文字幕精品一区二区三区精品 | 韩国久久久久久 | 在线观看国产精品入口男同 | 日本www在线 | 欧美精品一区二区三区在线 | 人人99 | 亚洲黄业| 日本大尺度床戏揉捏胸 | 人人爱操 | 精品人妻无码中文字幕18禁 | 久久av网站 | 337p日本欧洲亚洲大胆精筑 | 丝袜美腿中文字幕 | 久热国产在线 | 久久精品久久久久 | 欧美理论片在线观看 | 91桃色在线观看 | 午夜视频在线观看国产 | 欧美成人一二区 | 韩国美女av | 亚洲人成亚洲人成在线观看 | 成人视品| 日本一区二区三区四区视频 | 国产探花在线精品一区二区 | 婷婷深爱激情 | 色碰视频| 99re热这里只有精品视频 | 这里只有精品免费视频 | 国产av国片偷人妻麻豆 | 精品欧美乱码久久久久久1区2区 | 99re8在线精品视频免费播放 | 在线观看成年人视频 | 亚洲精品久久久久久久蜜桃 | 欧美激情国产日韩精品一区18 | 亚洲91网 | 97久久精品视频 | 天天操综合网 | 国产77777| 国产欧美一区二区精品忘忧草 | 国语对白一区二区 | 亚洲精选一区二区 | a视频在线免费观看 | 国产睡熟迷奷系列精品视频 | 激情综合啪啪 | jizz91| 91成人在线观看喷潮动漫 | 在线观看欧美国产 | 天天摸夜夜 | 麻豆视频在线 | 久久久久性色av无码一区二区 | 日韩一区二区三区免费视频 | 嫩草影院黄 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 |