Docker images詳細介紹及管理製作鏡像

Docker   images   介紹:


     docker  images 是docker 的三大組件之一

  docker把下載好的鏡像上傳到docker本地鏡像倉庫中,如果本地鏡像倉庫中不存在需要用到的鏡像,docker會從一個鏡像庫中去下載所需鏡像,默認的公共倉庫是Docker HUB。


Docker image 的內容:

 

  •      使用和管理本地主機上images

  •      創建一個基礎的images

  •      上傳images到docker hub(公共images倉庫)

  •       列出本地主機上已經存在的images


(1.)使用Docker images 顯示本機上的images

wKiom1ktJNfzWJREAACPtUwxxxA336.jpg-wh_50

  • EPOSITORY:來自於哪個倉庫,比如Docker.io/centos

  • TAG的標記,比如 latest

  • IMAGE ID:鏡像的ID號

  • CREATED:創建時間

  • SIZE:鏡像的大小


注意:

          一個倉庫可能有多個發行版本,比如Ubuntu,他們有10.04、12.04、12.10、

13.04、14.04,每個發行版本的標記都不同,可以使用tag命令來指定images標記

如果不指定具體的發行版本的話,例如就使用Ubuntu,那麼Docker會使用最新的發

行版Ubuntu:latest


(2.)獲取images


        我們如何獲取新的images呢?當我們啓動容器使用的image不再本地主機上時,Docker會自動下載它們。這時很耗時,我們可以使用Docker pull命令預先下載我們需要的image

      wKioL1ktKT2CSs3JAADVXRpZISU372.jpg-wh_50


(3.)查找images


     Docker的一個特點是很多人因爲各種不同的用途創建了各種不同的images。

它們都被上傳到了Docker hub公有倉庫上,我們可以在Docker hub 的網站上來查找它們。


    使用Docker search命令


     例如:當我們需要ruby和sinatra作爲web應用程序開發時,我們使用Docker  search

來搜索合適的image,使用關鍵字Sinatra。


wKioL1ktK8-x45wTAAIECZ4oZCU002.jpg-wh_50

我們看到了返回了很多包含Sinatra的images。其中包括image名字、描述、星級(表

示該image的受歡迎程度)、是否官方創建、是否自動創建。官方的images是

stackbrew項目組創建和維護的,automated資源允許你驗證image的來源和內容。


到目前爲止,我們看到了2種images資源,比如Ubuntu,被稱爲基礎或者根鏡像。這

些基礎鏡像是Docker公司創建、驗證、支持、提供。他們往往使用一個單詞作爲他

們的名字。還有一種類型,比如我們選擇的training/Sinatra鏡像。他是由Docker的用

戶創建並維護的,你可以通過指定image名字的前綴來指定他們,比如training。


(3.)下載images


   現在我們指定了一個image, training/Sinatra,我們可以使用docker pull命令來下載它。


wKioL1ktMLuQyPDaAAGKZ8c9Tow552.jpg-wh_50

下載過程中,會輸出獲取鏡像的每一層信息


該命令實際上相當於#Docker pull register.hub.docker.com/ubuntu:12.04  命令,即從註冊服務器register.hub.docker.com 中的Ubuntu倉庫來下載標記爲 12.04 的鏡像。

有時候官方倉庫註冊服務器下載較慢,可以從其他倉庫下載。 從其他倉庫下載時需要指定完整的倉庫註冊服務器地址。

例如: #docker pull dl.dockerpool.com:5000/ubuntu:12.04


查看完整信息:

        當鏡像下載成功後,你可以看到12位的hash值鏡像

wKioL1ktM6-QlKk7AADVqO46x3M647.jpg-wh_50

 像1d551d635e99,這是下載完整的鏡像的精簡ID,這些短的鏡像ID是完整鏡像ID的前12個字符。


可以使用Docker inspect 或者Docker images --no-trunc來獲得完整的鏡像ID


Docker inspect:


wKiom1ktNR-x6K1fAAF01-fMeyw742.jpg-wh_50

或者


Docker   images  --no-trunc


wKioL1ktNh3CgxKRAAFyEx1Qfio424.jpg-wh_50


創建images:

      1.第一種方法:使用Docker commit 來擴展一個新的images


             (1.)先使用images啓動容器,進到容器裏面

 wKiom1ktN4OzJyTHAABQCMDG7PE506.jpg-wh_50

           (2.)在容器中添加mariadb-server應用。

wKioL1ktOKfQxvIjAAHnaVyu2EM887.jpg-wh_50

注意:記住剛纔的容器的ID號


安裝完成後退出,現在容器已經改變了,更新後的結果提交到新的image。


使用Docker commit 命令來提交相應的副本。


 wKiom1ktOnLRwQKMAACK3lYNsU8913.jpg-wh_50

其中 -m 來指定提交信息的說明信息,跟使用的版本控制工具一樣;-a 可以指定更新的用戶信息;之後是用來創建鏡像的容器ID;最後指定目標鏡像的倉庫名和tag標記信息。


使用Docker images查看新創建的鏡像:

wKioL1ktO4CxcVPIAADxRH2wjIY374.jpg-wh_50

可以使用新創建好的鏡像來啓動容器:

wKiom1ktO_uBSYPZAABv7rKhXgE393.jpg-wh_50

 

2.第二種方法:從dockefile來創建image


    (1.)創建一個目錄和一個dockefile文件

wKiom1ktPT_hVPxuAABj9pnvzhE504.jpg-wh_50

內容如下:

  wKiom1ktPleSJgycAAB6GKUpV6A597.jpg-wh_50

dockerfile基本語法:

使用#來註釋

FROM指令告訴docker使用哪個鏡像作爲基礎鏡像

MAINTAINER是維護者信心

RUN開頭的指令會在創建中運行,比如安裝一個軟件包,在這裏使用yum來安裝了一些軟件


編寫完成dockerfile後可以使用docke build 來生成鏡像。


wKioL1ktQc7yoIerAAEaisS_cik229.jpg-wh_50

其中 -t  標記來添加tag,指定新的鏡像的用戶信息。

“.”是dockerfile所在的路徑(當前目錄),也可以替換爲一個具體的dockefile路徑。

可以看到build進程在執行操作。他要做的第一件事情就是上傳這個dockefile內

容,因爲所有的操作都要依據dockefile來進行。然後,dockefile中的指令被一條一

條的執行。每一步都創建了一個新的容器,在容器中執行指令並提交修改(就跟

之前的docker commit一樣)。當所有的指令都執行完畢之後,所有中間步驟所產

生的容器都被刪除和清理了。最後返回了最終的鏡像ID。


*注意:一個鏡像不能超過127層。


查看新生成的鏡像:


wKiom1ktRCvQjPqcAAEU6RzOKEI901.jpg-wh_50


還可以用docker tag 命令來修改鏡像的標籤:


修改前:

wKioL1ktRUrjIQ8wAADbjTwyv2g968.jpg-wh_50


修改後:

wKiom1ktRdaxvZ_5AAELSHIZq58434.jpg-wh_50


3.從本地文件系統導入

    要從本地文件系統導入一個鏡像,可以使用openvz(容器虛擬化的先鋒技術)的模板來創建

openvz的模板下載地址爲http://openvz.org/Download/template/precreated


先下載了一個centos6.tar.gz的鏡像,之後使用以下命令導入到本地鏡像庫

wKioL1ktSGzyXMKoAAEbCpoMGSk796.jpg-wh_50


4.上傳鏡像:


用戶可以通過docker push 命令,把自己創建的鏡像上傳到倉庫中來共享。


例如: 用戶在Docke hub上進行註冊完成後,可以推送自己的鏡像到docker hub倉庫中。


有兩種方式可以創建和註冊一個docker hub 倉庫賬戶:


1.通過網站,(https://hub,docker.com


2.通過命令行,輸入docker login命令來創建一個Docker HUB 賬號


#docker login


郵箱確認:


一旦你填寫完畢表格,請查看你的電子郵件,通過點擊歡迎信息中的鏈接來激活您的賬戶。


基本思路步驟:

(1.)首先註冊docker的賬戶,然後使用docker login登錄。

wKioL1ktjpOQHx2OAAFBJTZAVU8189.jpg-wh_50

下一步

wKioL1ktlDHx_974AAFpWQX3a_k044.jpg-wh_50

wKioL1ktlBniSMgoAAEV6aGbf1c681.jpg-wh_50

上傳結果:

wKioL1ktlG-RK6dNAABSu06j0m0718.jpg-wh_50


如果有其他倉庫,就輸入其他倉庫名

例如:docker push  docker.sina.com.cn:5000/commit


5.用docker rmi 移除本地images

注意:在刪除images之前要先用docker rm 刪掉依賴於這個images容器


 刪除容器:

    wKiom1ktlpXw7MY2AABHzzeE4iQ726.jpg-wh_50

刪除鏡像:

    wKiom1ktlvagDUScAACdlLaGoWE281.jpg-wh_50


6.導出/導入鏡像:


  當需要把一臺機器上的鏡像遷移到另一臺機器上的時候,需要導出鏡像、導入鏡像。

    

   導出鏡像:

   wKioL1ktmCXwkAJ8AABlBp2ZAXI113.jpg-wh_50

   導入鏡像:

    可以使用docker load 從導出的本地文件中再導入到本地鏡像庫。

    例如:

    wKioL1ktmZPyzBonAAFMgPYQfkg737.jpg-wh_50

   或者是

   wKioL1ktm57R0qtuAADcJ6oVp3Q907.jpg-wh_50

  

 

 























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章