婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Docker的鏡像理解以及容器的備份、恢復和遷移操作

Docker的鏡像理解以及容器的備份、恢復和遷移操作

熱門標簽:電話外呼系統線路哪家公司做得好 地圖標注用小紅旗 索契地圖標注app 免費高德地圖標注 成都人工外呼系統平臺 巴東單位怎么做地圖標注 外呼系統工作推進 儋州電銷機器人廠家 地圖標注員項目

Docker鏡像的基本知識
1.1 什么是Docker鏡像
從整體的角度來講,一個完整的Docker鏡像可以支撐一個Docker容器的運行,在 Docker容器運行過程中主要提供文件系統視角。例如一個ubuntu:14.04的鏡像,提供了一個基本的ubuntu:14.04的發行版,當然此 鏡像是不包含操作系統Linux內核的。

說到此,可能就需要注意一下,linux內核和ubuntu:14.04Docker鏡像的區別了。傳統虛擬機安裝ubuntu:14.04會包含兩部分,第一,某一個Linux內核的發行版本,比如Linux 3.8版本的內核;第二,第一個特定的Ubuntu發行版,這部分內容不包含Linux內核,但是包含Linux之外的軟件管理方式,軟件驅動,如 apt-get軟件管理包等。

理解以上內容之后,就可以理解,為什么在一個Linux內核版本為3.8的ubuntu:14.04基礎上,可以把Linux內核版本升級到3.18,而ubuntu的版本依然是14.04。最主要的就是:Linux內核版本與ubuntu操作系統發行版之間的區別。

Linux內核+ubuntu操作系統發行版,組成一臺工作的機器讓用戶體驗。那么靈活替換ubuntu操作系統發行版,那是不是也可以實現呢。那么Docker很方便的利用了這一點,技術手段就是Docker鏡像。

Docker的架構中,Docker鏡像就是類似于“ubuntu操作系統發行版”,可 以在任何滿足要求的Linux內核之上運行。簡單一點有“Debian操作系統發行版”Docker鏡像、“Ubuntu操作系統發行版”Docker鏡 像;如果在Debian鏡像中安裝MySQL 5.6,那我們可以將其命名為Mysql:5.6鏡像;如果在Debian鏡像中安裝有Golang 1.3,那我們可以將其命名為golang:1.3鏡像;以此類推,大家可以根據自己安裝的軟件,得到任何自己想要的鏡像。

那么鏡像最后的作用是什么呢?很好理解,回到Linux內核上來運行,通過鏡像來運行時我們常常將提供的環境稱為容器。

以上內容是從宏觀的角度看看Docker鏡像是什么,我們再從微觀的角度進一步深入 Docker鏡像。剛才提到了“Debian鏡像中安裝MySQL 5.6,就成了mysql:5.6鏡像”,其實在此時Docker鏡像的層級概念就體現出來了。底層一個Debian操作系統鏡像,上面疊加一個 mysql層,就完成了一個mysql鏡像的構建。層級概念就不難理解,此時我們一般debian操作系統鏡像稱為mysql鏡像層的父鏡像。

層級管理的方式大大便捷了Docker鏡像的分發與存儲。說到分發,大家自然會聯想到 Docker鏡像的靈活性,傳輸的便捷性,以及高超的移植性。Docker Hub,作為全球的鏡像倉庫,作為Docker生態中的數據倉庫,將全世界的Docker數據匯聚在一起,是Docker生態的命脈。

Docker有兩方面的技術非常重要,第一是Linux 容器方面的技術,第二是Docker鏡像的技術。從技術本身來講,兩者的可復制性很強,不存在絕對的技術難點,然而Docker Hub由于存在大量的數據的原因,導致Docker Hub的可復制性幾乎不存在,這需要一個生態的營造。

1.2 Docker鏡像的內容
大致介紹了Docker鏡像是什么,我們來看看Docker鏡像中有哪些內容?

介紹之前,我先分享一下,我個人在接觸Docker的兩年時間中,對Docker鏡像內容認識的變化。

第一階段:初步接觸Docker。相信很多愛好者都會和我一樣,有這樣一個認識:Docker 鏡像代表一個容器的文件系統內容;

第二階段:初步接觸聯合文件系統。聯合文件系統的概念,讓我意識到鏡像層級管理的技術,每一層鏡像都是容器文件系統內容的一部分。

第三階段:研究鏡像與容器的關系:容器是一個動態的環境,每一層鏡像中的文件屬于靜態內 容,然而 Dockerfile 中的 ENV、VOLUME、CMD 等內容最終都需要落實到容器的運行環境中,而這些內容均不可能直接坐落到每一層鏡像所包含的文件系統內容中,那此時每一個Docker鏡像還會包含 json文件記錄與容器之間的關系。

因此,Docker鏡像的內容主要包含兩個部分:第一,鏡像層文件內容;第二,鏡像json文件。

1.3 Docker鏡像存儲位置
既然是說鏡像存儲的位置,那么應該包含:鏡像層文件和鏡像json文件。如一個ubuntu:14.04鏡像,包含4個鏡像層,在aufs存儲驅動的情況下,在磁盤上的情況可以如以下圖所示:

1.3.1 查看鏡像層組成:
我們可以通過命令 docker history ubuntu:14.04 查看 ubuntu:14.04,結果如下:

1.3.2 鏡像層文件內容存儲
Docker 鏡像層的內容一般在 Docker 根目錄的 aufs 路徑下,為 /var/lib/docker/aufs/diff/,具體情況如下:

圖中顯示了鏡像 ubuntu:14.04 的 4 個鏡像層內容,以及每個鏡像層內的一級目錄情況。需要額外注意的是:鏡像層 d2a0ecffe6fa 中沒有任何內容,也就是所謂的空鏡像。

1.3.3 鏡像 json 文件存儲
對于每一個鏡像層,Docker 都會保存一份相應的 json 文件,json 文件的存儲路徑為 /var/lib/docker/graph,ubuntu:14.04 所有鏡像層的 json 文件存儲路徑展示如下:

除了 json 文件,大家還看到每一個鏡像層還包含一個 layersize 文件,該文件主要記錄鏡像層內部文件內容的總大小。既然談到了鏡像 json 文件,為了給下文鋪墊,以下貼出 ubuntu:14.04 中空鏡像層 d2a0ecffe6fa 的 json 文件:

Docker鏡像存儲,就和大家一起先看到這。同時介紹Docker鏡像的基本知識也告一段落。以下我們進入此次分享的第二部分。

第二部分 Dockerfile、Docker鏡像和Docker容器的關系
Dockerfile 是軟件的原材料,Docker 鏡像是軟件的交付品,而 Docker 容器則可以認為是軟件的運行態。從應用軟件的角度來看,Dockerfile、Docker 鏡像與 Docker 容器分別代表軟件的三個不同階段,Dockerfile 面向開發,Docker 鏡像成為交付標準,Docker 容器則涉及部署與運維,三者缺一不可,合力充當 Docker 體系的基石。

簡單來講,Dockerfile構建出Docker鏡像,通過Docker鏡像運行Docker容器。

我們可以從Docker容器的角度,來反推三者的關系。首先可以來看下圖:

我們假設這個容器的鏡像通過以下Dockerfile構建而得:


復制代碼
代碼如下:
FROM ubuntu:14.04
ADD run.sh /
VOLUME /data
CMD ["./run.sh"]

2.1 Dockerfile與Docker鏡像
首先,我們結合上圖來看看Dockerfile與Docker鏡像之間的關系。

FROM ubuntu:14.04:設置基礎鏡像,此時會使用基礎鏡像 ubuntu:14.04 的所有鏡像層,為簡單起見,圖中將其作為一個整體展示。

ADD run.sh /:將 Dockerfile 所在目錄的文件 run.sh 加至鏡像的根目錄,此時新一層的鏡像只有一項內容,即根目錄下的 run.sh。

VOLUME /data:設定鏡像的 VOLUME,此 VOLUME 在容器內部的路徑為 /data。需要注意的是,此時并未在新一層的鏡像中添加任何文件,即構建出的磁層鏡像中文件為空,但更新了鏡像的 json 文件,以便通過此鏡像啟動容器時獲取這方面的信息。

CMD ["./run.sh"]:設置鏡像的默認執行入口,此命令同樣不會在新建鏡像中添加任何文件,僅僅在上一層鏡像 json 文件的基礎上更新新建鏡像的 json 文件。

因此,通過以上分析,以上的Dockerfile可以構建出一個新的鏡像,包含4個鏡像層,每一條命令會和一個鏡像層對應,鏡像之間會存在父子關系。圖中很清楚的表明了這些關系。

2.2 Docker鏡像與Docker容器的關系
Docker鏡像是Docker容器運行的基礎,沒有Docker鏡像,就不可能有Docker容器,這也是Docker的設計原則之一。

可以理解的是:Docker鏡像畢竟是鏡像,屬于靜態的內容;而Docker容器就不一樣了,容器屬于動態的內容。動態的內容,大家很容易聯想到進程,內存,CPU等之類的東西。的確,Docker容器作為動態的內容,都會包含這些。

為了便于理解,大家可以把Docker容器,理解為一個或多個運行進程,而這些運行進程將占有相應的內存,相應的CPU計算資源,相應的虛擬網絡設備以及相應的文件系統資源。而Docker容器所占用的文件系統資源,則通過Docker鏡像的鏡像層文件來提供。

那么作為靜態的鏡像,如何才有能力轉化為一個動態的Docker容器呢?此時,我們可以想象:第一,轉化的依據是什么;第二,由誰來執行這個轉化操作。

其實,轉化的依據是每個鏡像的json文件,Docker可以通過解析Docker鏡像的json的文件,獲知應該在這個鏡像之上運行什么樣的進程,應該為進程配置怎么樣的環境變量,此時也就實現了靜態向動態的轉變。

誰來執行這個轉化工作?答案是Docker守護進程。也許大家早就理解這樣一句 話:Docker容器實質上就是一個或者多個進程,而容器的父進程就是Docker守護進程。這樣的,轉化工作的執行就不難理解了:Docker守護進程 手握Docker鏡像的json文件,為容器配置相應的環境,并真正運行Docker鏡像所指定的進程,完成Docker容器的真正創建。

Docker容器運行起來之后,Docker鏡像json文件就失去作用了。此時Docker鏡像的絕大部分作用就是:為Docker容器提供一個文件系統的視角,供容器內部的進程訪問文件資源。

再次回到上圖,我們再來看看容器和鏡像之間的一些特殊關系。首先,之前已經提及Docker鏡像是分層管理的,管理Docker容器的時候,Docker鏡像仍然是分層管理的。由于此時動態的容器中已經存在進程,進程就會對文件系統視角內的文件進行讀寫操作,因此,就會涉及一個問題:容器是否會篡改Docker鏡像的內容?

答案自然是不會的。統一來講,正如上圖,所有的Docker鏡像層對于容器來說,都是只讀的,容器對于文件的寫操作絕對不會作用在鏡像中。

既然如此,實現的原理就很重要,究其根本:Docker守護進程會在Docker鏡像的 最上層之上,再添加一個可讀寫層,容器所有的寫操作都會作用到這一層中。而如果Docker容器需要寫底層Docker鏡像中的文件,那么此時就會涉及一 個叫Copy-on-Write的機制,即aufs等聯合文件系統保證:首先將此文件從Docker鏡像層中拷貝至最上層的可讀寫層,然后容器進程再對讀 寫層中的副本進行寫操縱。對于容器進程來講,它只能看到最上層的文件。

那最后我們再來說說:Docker容器的文件系統視角中,到底是不是存在一些內容,不是存儲于Docker鏡像中的?

這次的答案依舊是肯定的。

再次重申一點,Docker鏡像中存儲的都是一些靜態文件。這些文件原則上應該和容器具體信息以及主機信息完全解藕。那么Docker容器中不存在Docker鏡像中的內容主要有以下幾點:

1. /proc以及/sys等虛擬文件系統的內容

2. 容器的hosts文件,hostname文件以及resolv.conf文件,這些事具體環境的信息,原則上的確不應該被打入鏡像。

3. 容器的Volume路徑,這部分的視角來源于從宿主機上掛載到容器內部的路徑

4. 部分的設備文件

Docker中容器的備份、恢復和遷移
1. 備份容器
首先,為了備份Docker中的容器,我們會想看看我們想要備份的容器列表。要達成該目的,我們需要在我們運行著Docker引擎,并已創建了容器的Linux機器中運行 docker ps 命令。


復制代碼
代碼如下:
# docker ps


在此之后,我們要選擇我們想要備份的容器,然后去創建該容器的快照。我們可以使用 docker commit 命令來創建快照。


復制代碼
代碼如下:
# docker commit -p 30b8f18f20b4 container-backup


該命令會生成一個作為Docker鏡像的容器快照,我們可以通過運行 docker images 命令來查看Docker鏡像,如下。


復制代碼
代碼如下:
# docker images


正如我們所看見的,上面做的快照已經作為Docker鏡像保存了?,F在,為了備份該快照,我們有兩個選擇,一個是我們可以登錄進Docker注冊中心,并推送該鏡像;另一個是我們可以將Docker鏡像打包成tar包備份,以供今后使用。

如果我們想要在Docker注冊中心上傳或備份鏡像,我們只需要運行 docker login 命令來登錄進Docker注冊中心,然后推送所需的鏡像即可。


復制代碼
代碼如下:
# docker login



復制代碼
代碼如下:
# docker tag a25ddfec4d2a arunpyasi/container-backup:test
# docker push arunpyasi/container-backup

如果我們不想備份到docker注冊中心,而是想要將此鏡像保存在本地機器中,以供日后使用,那么我們可以將其作為tar包備份。要完成該操作,我們需要運行以下 docker save 命令。


復制代碼
代碼如下:
# docker save -o ~/container-backup.tar container-backup


要驗證tar包是否已經生成,我們只需要在保存tar包的目錄中運行 ls 命令即可。

2. 恢復容器
接下來,在我們成功備份了我們的Docker容器后,我們現在來恢復這些制作了Docker鏡像快照的容器。如果我們已經在注冊中心推送了這些Docker鏡像,那么我們僅僅需要把那個Docker鏡像拖回并直接運行即可。


復制代碼
代碼如下:
# docker pull arunpyasi/container-backup:test


但是,如果我們將這些Docker鏡像作為tar包文件備份到了本地,那么我們只要使用 docker load 命令,后面加上tar包的備份路徑,就可以加載該Docker鏡像了。


復制代碼
代碼如下:
# docker load -i ~/container-backup.tar

現在,為了確保這些Docker鏡像已經加載成功,我們來運行 docker images 命令。


復制代碼
代碼如下:
# docker images

在鏡像被加載后,我們將用加載的鏡像去運行Docker容器。


復制代碼
代碼如下:
# docker run -d -p 80:80 container-backup


3. 遷移Docker容器
遷移容器同時涉及到了上面兩個操作,備份和恢復。我們可以將任何一個Docker容器從一臺機器遷移到另一臺機器。在遷移過程中,首先我們將把容器備份為Docker鏡像快照。然后,該Docker鏡像或者是被推送到了Docker注冊中心,或者被作為tar包文件保存到了本地。如果我們將鏡像推送到了Docker注冊中心,我們簡單地從任何我們想要的機器上使用 docker run 命令來恢復并運行該容器。但是,如果我們將鏡像打包成tar包備份到了本地,我們只需要拷貝或移動該鏡像到我們想要的機器上,加載該鏡像并運行需要的容器即可。

尾聲
最后,我們已經學習了如何快速地備份、恢復和遷移Docker容器,本教程適用于各個可以成功運行Docker的操作系統平臺。真的,Docker是一個相當簡單易用,然而功能卻十分強大的工具。它的命令相當易記,這些命令都非常短,帶有許多簡單而強大的標記和參數。上面的方法讓我們備份容器時很是安逸,使得我們可以在日后很輕松地恢復它們。這會幫助我們恢復我們的容器和鏡像,即便主機系統崩潰,甚至意外地被清除。如果你還有很多問題、建議、反饋,請在下面的評論框中寫出來吧,可以幫助我們改進或更新我們的內容。謝謝大家!享受吧 :-)

標簽:江蘇 儋州 安康 鄂州 龍巖 長春 鶴壁 茂名

巨人網絡通訊聲明:本文標題《Docker的鏡像理解以及容器的備份、恢復和遷移操作》,本文關鍵詞  Docker,的,鏡像,理解,以及,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Docker的鏡像理解以及容器的備份、恢復和遷移操作》相關的同類信息!
  • 本頁收集關于Docker的鏡像理解以及容器的備份、恢復和遷移操作的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    韩国中文字幕2020精品| 国产精品一二三区| 久久精品国产色蜜蜜麻豆| 26uuu欧美| 欧美老肥妇做.爰bbww| 欧美日韩一区高清| 欧美精品一级二级| 春色校园综合激情亚洲| 国产乱码字幕精品高清av | 狠狠色综合日日| 欧美日韩不卡在线| 夜夜爽夜夜爽精品视频| 成人av午夜影院| 国产欧美日韩麻豆91| 大尺度一区二区| 国产精品久久久一本精品 | 不卡视频一二三| 亚洲综合精品久久| 欧美一区二区三区人| 国产成人免费在线观看| 亚洲欧美电影一区二区| 欧美美女直播网站| 成人免费高清在线观看| 日韩电影免费一区| 亚洲天堂2014| 精品理论电影在线| 欧美三级视频在线| 麻豆专区一区二区三区四区五区| 久久蜜臀中文字幕| 精品国产污网站| 色婷婷久久久亚洲一区二区三区 | 亚洲三级电影全部在线观看高清| 91色在线porny| 久久精品国产色蜜蜜麻豆| 亚洲成a人在线观看| 国产亚洲一区二区在线观看| 欧美精品一二三| 91麻豆国产福利在线观看| 国产精品一区一区三区| 免费成人结看片| 午夜私人影院久久久久| 亚洲欧美日韩国产综合在线| 久久久一区二区三区| 欧美成人性战久久| 2020国产精品久久精品美国| 欧美刺激午夜性久久久久久久| 欧美日本一区二区三区四区| 91年精品国产| 色女孩综合影院| 久久精品一二三| 欧美精品一区二区三区高清aⅴ| 欧美日韩三级一区二区| 91精品在线一区二区| 久久人人97超碰com| 中文字幕一区二区三区蜜月| 欧美一区二区三区人| 色婷婷综合久久久久中文一区二区 | 色噜噜狠狠色综合中国 | 久久99热这里只有精品| 美女一区二区视频| 国产麻豆视频一区二区| 日本韩国欧美一区二区三区| 欧美日韩国产中文| 亚洲欧洲一区二区在线播放| 五月天亚洲精品| 97se亚洲国产综合自在线观| 精品国精品国产| 亚洲专区一二三| 91精品在线一区二区| 国产精品久久久久久久午夜片| 日本不卡一二三区黄网| av动漫一区二区| 1024亚洲合集| 色综合色综合色综合色综合色综合| 精品对白一区国产伦| 国内精品伊人久久久久影院对白| 日本韩国精品一区二区在线观看| 日本一二三不卡| 国产精品1区2区3区在线观看| 欧美一区二区三区白人| 中文字幕在线免费不卡| 亚洲小说欧美激情另类| 欧美日韩一区高清| 亚洲天堂免费看| 国产成人啪免费观看软件| 欧美日韩五月天| 欧美极品另类videosde| 久久精品国产网站| 日韩一区二区在线播放| 一区二区三区**美女毛片| 国内精品伊人久久久久av一坑| 精品久久人人做人人爱| 毛片基地黄久久久久久天堂| 7777精品伊人久久久大香线蕉最新版| 最新不卡av在线| 97成人超碰视| 亚洲综合区在线| 国产v日产∨综合v精品视频| 亚洲一二三区视频在线观看| 一色屋精品亚洲香蕉网站| 国产精品99久久久久久久vr| 成人中文字幕在线| 九色|91porny| 亚洲精品国产视频| 欧美精品一卡两卡| 国产精品一区二区三区乱码| 国产精品免费看片| 久久成人av少妇免费| 人人爽香蕉精品| 亚洲国产精品黑人久久久 | 在线观看www91| 亚洲国产日韩a在线播放| 91一区二区三区在线观看| 国产乱人伦偷精品视频免下载| 亚洲免费在线看| 欧美私模裸体表演在线观看| 国产一区二区在线免费观看| 亚洲综合久久久久| 久久久久国产成人精品亚洲午夜| 在线一区二区三区四区五区 | 国产精品99久久不卡二区| 国产一区二区精品久久| 亚洲影院免费观看| 欧美三级午夜理伦三级中视频| 成人午夜电影小说| 激情综合亚洲精品| 国产精品麻豆视频| 欧美大度的电影原声| 欧美精品日韩综合在线| 日韩精品一区二区三区在线 | 不卡电影免费在线播放一区| 三级不卡在线观看| 日本不卡一区二区三区高清视频| 亚洲国产精品一区二区久久恐怖片 | 69成人精品免费视频| 9l国产精品久久久久麻豆| 国产成人午夜高潮毛片| 国产精品888| 99久久精品情趣| 久久尤物电影视频在线观看| 欧美v日韩v国产v| 久久精品亚洲国产奇米99| 久久精品人人做人人爽人人| 日本一区二区三区国色天香| 国产乱码精品一区二区三区忘忧草 | 亚洲综合在线视频| 天堂成人国产精品一区| 美国一区二区三区在线播放| 国产精品18久久久久| 91福利视频久久久久| zzijzzij亚洲日本少妇熟睡| 欧美人xxxx| 亚洲人成网站色在线观看| 三级久久三级久久| 成人精品小蝌蚪| 91一区一区三区| 亚洲国产精品二十页| 一区二区视频在线看| 极品少妇xxxx精品少妇| 91福利在线看| 伊人一区二区三区| 91在线精品一区二区| 久久综合给合久久狠狠狠97色69| 亚洲天堂免费看| 成人高清视频免费观看| 中文乱码免费一区二区 | 亚洲视频免费看| 一区二区三区不卡在线观看 | 国产盗摄女厕一区二区三区| 欧美电影免费观看高清完整版在| 日韩欧美电影一二三| 亚洲美女视频一区| 99久久综合狠狠综合久久| 久久精品日产第一区二区三区高清版 | 国产一区二区电影| 日韩欧美国产wwwww| 日本欧美一区二区三区| 欧美一级高清片在线观看| 91美女在线视频| 午夜伦欧美伦电影理论片| 91精品国产入口在线| 日韩电影免费在线看| 日韩免费视频一区二区| 国产精品 欧美精品| 国产日产欧产精品推荐色| 91在线观看视频| 亚洲精品视频自拍| 欧美mv日韩mv国产| 欧美电影一区二区三区| 丁香天五香天堂综合| 免费欧美在线视频| 中文字幕久久午夜不卡| 日韩美女视频在线| 91福利小视频| av一本久道久久综合久久鬼色| 免费视频一区二区| 亚洲成a人片在线观看中文| 国产精品色呦呦| 日韩精品中午字幕| 欧美一卡2卡三卡4卡5免费|