Docker學習筆記(4)--鏡像篇

傳送門:
Docker學習筆記(1)--Docker安裝(Ubuntu 16.04)
Docker學習筆記(2)--使用Docker Hub Mirror加速Docker官方鏡像下載
Docker學習筆記(3)--什么是Docker鏡像笋鄙、容器和倉庫台颠?
Docker學習筆記(4)--鏡像篇

基本概念

Docker鏡像可以用來創(chuàng)建Docker容器童芹,為一個只讀的模板宪摧。

Docker運行容器前需要本地存在對應的鏡像厘线,如果鏡像不在本地壁拉,Docker會從鏡像倉庫下載赁豆。

docker的鏡像實際上由一層一層的文件系統(tǒng)組成椎镣,這種層級的文件系統(tǒng)被稱為UnionFS杂曲。在Docker鏡像的最底層是bootfs庶艾。這一層與我們典型的Linux/Unix系統(tǒng)是一樣的,包含boot加載器和內核擎勘。當boot加載完成之后整個內核就都在內存中了咱揍,此時內存的使用權已由bootfs轉交給內核,此時系統(tǒng)也會卸載bootfs棚饵。Docker在bootfs之上的一層是rootfs(根文件系統(tǒng))煤裙。rootfs就是各種不同的操作系統(tǒng)發(fā)行版掩完,比如Ubuntu,Centos等等硼砰。

由于 Docker 使用一個統(tǒng)一文件系統(tǒng)且蓬,Docker 進程認為整個文件系統(tǒng)是以讀寫方式掛載的。 但是所有的變更都發(fā)生頂層的可寫層题翰,而下層的原始的只讀鏡像文件并未變化恶阴。由于鏡像不可寫,所以鏡像是無狀態(tài)的遍愿。

docker鏡像的層級結構圖:


獲取鏡像

從Docker Hub倉庫獲取

目前 Docker 官方維護了一個公共倉庫 Docker Hub存淫,其中已經包括了超過 15,000 的鏡像。大部分需求沼填,都可以通過在 Docker Hub 中直接下載鏡像來實現(xiàn)桅咆。可以使用 docker pull 命令來從倉庫獲取所需要的鏡像坞笙。

例如從 Docker Hub 倉庫下載一個 Ubuntu 12.04 操作系統(tǒng)的鏡像:

sudo docker pull ubuntu:12.04S

有時候官方倉庫注冊服務器下載較慢岩饼,可以從其他倉庫下載,如下所述薛夜。

從Docker Hub Mirror獲取

《Docker學習筆記(2)--使用Docker Hub Mirror加速Docker官方鏡像下載》介紹了如何通過DaoCloud提供Docker Hub Mirror服務進行鏡像的加速下載籍茧。

例如使用ocker Hub Mirror服務下載一個 CentOS 操作系統(tǒng)的鏡像:

dao pull centos

鏡像的拉取過程如下圖所示:


本地鏡像

使用docker images顯示本地已有鏡像。

ymhou@ubuntu:~$ sudo docker images
[sudo] ymhou 的密碼: 
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
aspnet-equip2                           latest              7db79b00dfc6        13 hours ago        1.352 GB
aspnet-equip                            latest              c43889d0c994        13 hours ago        828.2 MB
aspnet-hello-web                        latest              0caea7860935        13 hours ago        1.228 GB
ubuntu                                  14.04               c8ceaee85d23        5 days ago          188 MB
hello-world                             latest              c54a2cc56cbb        3 weeks ago         1.848 kB
microsoft/aspnet                        latest              137814287352        5 weeks ago         815.2 MB
daocloud.io/daocloud/daocloud-toolset   latest              1ab33797d8a1        3 months ago        150.2 MB
training/webapp                         latest              694deee4f65f        14 months ago       348.8 MB
training/postgres                       latest              ed8be1ec6753        2 years ago         364.6 MB

其中包含了如下信息:倉庫梯澜,標記寞冯,ID,創(chuàng)建時間晚伙,大小吮龄。

其中鏡像的 ID 唯一標識了鏡像;
TAG 信息用來標記來自同一個倉庫的不同鏡像。例如 ubuntu 倉庫中有多個鏡像咆疗,通過 TAG 信息來區(qū)分發(fā)行版本漓帚,例如 10.04、12.04午磁、12.10尝抖、13.04、14.04 等迅皇。

搜索鏡像

Docker的特點之一是人們創(chuàng)建了各種各樣的docker鏡像昧辽。而且這些鏡像已經被上傳到了Docker Hub。我們可以從Docker Hub網站來搜索鏡像登颓;同樣的搅荞,之前我們提到的DaoCloud也提供了鏡像搜索服務。


Docker Hub

DaoCloud

我們也可以使用docker search命令來搜索鏡像:

sudo docker search [server/]registry[:tag]

當未指定server時,默認從官方倉庫注冊服務器搜索取具,當未指定tag時,默認為latest版本鏡像扁耐。比如搜索mysql

ymhou@ubuntu:~$ sudo docker search mysql
[sudo] ymhou 的密碼: 
NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                      MySQL is a widely used, open-source relati...   2748      [OK]       
mysql/mysql-server         Optimized MySQL Server Docker images. Crea...   177                  [OK]
centurylink/mysql          Image containing mysql. Optimized to be li...   46                   [OK]
sameersbn/mysql                                                            36                   [OK]
appcontainers/mysql        Centos/Debian Based Customizable MySQL Con...   8                    [OK]
marvambass/mysql           MySQL Server based on Ubuntu 14.04              6                    [OK]
alterway/mysql             Docker Mysql                                    2                    [OK]
drupaldocker/mysql         MySQL for Drupal                                2                    [OK]
azukiapp/mysql             Docker image to run MySQL by Azuki - http:...   2                    [OK]
yfix/mysql                 Yfix docker built mysql                         2                    [OK]
...

我們看到了返回了大量的mysql鏡像暇检。我們看到列表中有鏡像名稱、描述婉称、Stars(衡量鏡像的流行程度-如果用戶喜歡這個鏡像他就會點擊stars)和官方自動構建鏡像狀態(tài)块仆。

創(chuàng)建鏡像

如果在官方服務器上沒有自己需要的鏡像,我們可以自己創(chuàng)建一個新的鏡像王暗。創(chuàng)建鏡像有三種方法悔据。

修改已有鏡像

首先利用已有鏡像創(chuàng)建容器,然后在容器里面完成我們需要的操作俗壹,最后將新的容器使用dockercommit提交到本地鏡像庫科汗。

sudo docker commit -m "commit information" -a "user information" Container_ID Image:Tag

其中,-m 來指定提交的說明信息绷雏,跟我們使用的版本控制工具一樣头滔;-a 可以指定更新的用戶信息;之后是用來創(chuàng)建鏡像的容器的 ID涎显;最后指定目標鏡像的倉庫名和 tag 信息坤检。創(chuàng)建成功后會返回這個鏡像的 ID 信息。

例如:

sudo docker commit -m "add new file" -a "ymhou" 0b2616b0e5a8 mysql-db:v2
4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c

利用Dockerfile創(chuàng)建鏡像

首先生成一個創(chuàng)建鏡像的Dockerfile文件期吓,包含一些如何創(chuàng)建鏡像的指令早歇,然后運行docker build命令創(chuàng)建鏡像。
比如下面的Dockerfile文件:

ymhou@ubuntu:~/equip$ vim Dockerfile 

From microsoft/aspnet

COPY . /app
WORKDIR /app
RUN ["dnu","restore"]

EXPOSE 5004
ENTRYPOINT ["dnx","-p","project.json","web"]

編寫完成 Dockerfile 后可以使用 docker build 來生成鏡像讨勤。

sudo docker build -t="aspnet-mvc:v2" .

其中 -t 標記來添加 tag箭跳,指定新的鏡像的用戶信息。 “.” 是 Dockerfile 所在的路徑(當前目錄)悬襟,也可以替換為一個具體的 Dockerfile 的路徑衅码。

從本地文件系統(tǒng)導入

如果為從容器生成的鏡像則使用docker import導入,如果為從鏡像導出的鏡像脊岳,則使用docker load導入逝段。

導出和載入鏡像

導出鏡像

如果要導出鏡像到本地文件,可以使用 docker save 命令割捅。

sudo docker save -o ubuntu14.04.tar ubuntu:14.04

載入鏡像

可以使用 docker load 從導出的本地文件中再導入到本地鏡像庫奶躯,例如:

sudo docker load --input ubuntu14.04.tar

sudo docker load < ubuntu14.04.tar

刪除本地鏡像

使用docker rmi命令刪除本地鏡像。

ymhou@ubuntu:~/equip$ sudo docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
aspnet-equip2                           latest              7db79b00dfc6        17 hours ago        1.352 GB
aspnet-equip                            latest              c43889d0c994        18 hours ago        828.2 MB
aspnet-hello-web                        latest              0caea7860935        18 hours ago        1.228 GB
ubuntu                                  14.04               c8ceaee85d23        5 days ago          188 MB
hello-world                             latest              c54a2cc56cbb        3 weeks ago         1.848 kB
microsoft/aspnet                        latest              137814287352        5 weeks ago         815.2 MB
daocloud.io/daocloud/daocloud-toolset   latest              1ab33797d8a1        3 months ago        150.2 MB
training/webapp                         latest              694deee4f65f        14 months ago       348.8 MB
training/postgres                       latest              ed8be1ec6753        2 years ago         364.6 MB
ymhou@ubuntu:~/equip$ sudo docker rmi aspnet-equip
Untagged: aspnet-equip:latest
Deleted: sha256:c43889d0c994d425a6cc4ec5333186c4aa771a7b82325a698254b95edc4ea1fa
Deleted: sha256:aee0abb3d94c523b30df01cbb4465b49d63cf2159696d6383bb2d079d6aa10e7
Deleted: sha256:411d2ea3ecbc324a13d1c72b6103e20a996d99954b15eb91b3130623323794d2
Deleted: sha256:d06161776c4b435c672fed1ee6ac54013781d253ba58581cb2cf4263aa4ca311
Deleted: sha256:5b601853e6b6ca283954848d460cecb1b385269dea98c19e59193e256e4124c9
Deleted: sha256:9409ca5cff2757904d32b3a887e171bc8ad2a0d537996d4f4da50adc491e20d4
Deleted: sha256:aa488445dd361a59d30361bd5849fc4b61763dd577436066945f67b74d5823cf

Reference

https://yeasy.gitbooks.io/docker_practice/content/index.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末亿驾,一起剝皮案震驚了整個濱河市嘹黔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖儡蔓,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭蕉,死亡現(xiàn)場離奇詭異,居然都是意外死亡喂江,警方通過查閱死者的電腦和手機召锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來获询,“玉大人涨岁,你說我怎么就攤上這事〖” “怎么了梢薪?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尝哆。 經常有香客問我秉撇,道長,這世上最難降的妖魔是什么秋泄? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任畜疾,我火速辦了婚禮,結果婚禮上印衔,老公的妹妹穿的比我還像新娘啡捶。我一直安慰自己,他們只是感情好奸焙,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布瞎暑。 她就那樣靜靜地躺著,像睡著了一般与帆。 火紅的嫁衣襯著肌膚如雪了赌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天玄糟,我揣著相機與錄音勿她,去河邊找鬼。 笑死阵翎,一個胖子當著我的面吹牛逢并,可吹牛的內容都是我干的。 我是一名探鬼主播郭卫,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼砍聊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贰军?” 一聲冷哼從身側響起玻蝌,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后俯树,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帘腹,經...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年许饿,在試婚紗的時候發(fā)現(xiàn)自己被綠了竹椒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡米辐,死狀恐怖,靈堂內的尸體忽然破棺而出书释,到底是詐尸還是另有隱情翘贮,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布爆惧,位于F島的核電站狸页,受9級特大地震影響,放射性物質發(fā)生泄漏扯再。R本人自食惡果不足惜芍耘,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熄阻。 院中可真熱鬧斋竞,春花似錦、人聲如沸秃殉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钾军。三九已至鳄袍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吏恭,已是汗流浹背拗小。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留樱哼,地道東北人哀九。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像搅幅,于是被迫代替她去往敵國和親勾栗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容

  • 轉載自 http://blog.opskumu.com/docker.html 一盏筐、Docker 簡介 Docke...
    極客圈閱讀 10,510評論 0 120
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件围俘?Google Compute Engi...
    ahohoho閱讀 15,548評論 15 147
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應用容器引擎,基于容器化界牡,沙箱機制的應用部署技術簿寂。可...
    sessionboy閱讀 3,862評論 2 49
  • 一宿亡、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,392評論 0 27
  • 開始的開始是我們唱歌 最后的最后是我們在走 最親愛的你象是夢中的風景 說夢醒后你會去我相信 不憂愁的臉是我的少年 ...
    M_152閱讀 299評論 0 1