天天看點

兩種方式建立你自己的 Docker 基本映像兩種方式建立你自己的 Docker 基本映像

docker 映像是不可更改的隻讀層。docker 使用 union file system 在隻讀檔案系統上增加可讀寫的檔案系統,但所有更改都發生在最頂層的可寫層,而其下的隻讀映像上的原始檔案仍然不會改變。由于映像不會改變,也就沒有狀态。基本映像是沒有父類的那些映像。docker 基本映像主要的好處是它允許我們有一個獨立運作的 linux 作業系統。

兩種方式建立你自己的 Docker 基本映像兩種方式建立你自己的 Docker 基本映像

下面是我們如何可以建立自定義的基本映像的方式。

<a target="_blank"></a>

我們可以使用 tar 建構我們自己的基本映像,我們從一個運作中的 linux 發行版開始,将其打包為基本映像。這過程可能會有些不同,它取決于我們打算建構的發行版。在 debian 發行版中,已經預帶了 debootstrap。在開始下面的步驟之前,我們需要安裝 debootstrap。debootstrap 用來擷取建構基本系統需要的包。這裡,我們建構基于 ubuntu 14.04 "trusty" 的映像。要完成這些,我們需要在終端或者 shell 中運作以下指令。

<code>$ sudo debootstrap trusty trusty &gt; /dev/null</code>

<code>$ sudo tar -c trusty -c . | sudo docker import - trusty</code>

兩種方式建立你自己的 Docker 基本映像兩種方式建立你自己的 Docker 基本映像

使用debootstrap建構docker基本映像

上面的指令為目前檔案夾建立了一個 tar 檔案并輸出到标準輸出中,"docker import - trusty" 通過管道從标準輸入中擷取這個 tar 檔案并根據它建立一個名為 trusty 的基本映像。然後,如下所示,我們将運作映像内部的一條測試指令。

<code>$ docker run trusty cat /etc/lsb-release</code>

在 docker registry 中,有一個被稱為 scratch 的使用空 tar 檔案建構的特殊庫:

<code>$ tar cv --files-from /dev/null | docker import - scratch</code>

兩種方式建立你自己的 Docker 基本映像兩種方式建立你自己的 Docker 基本映像

使用scratch建構docker基本映像

我們可以使用這個映像建構新的小容器:

<code>from scratch</code>

<code>add script.sh /usr/local/bin/run.sh</code>

<code>cmd ["/usr/local/bin/run.sh"]</code>

上面的 dockerfile 檔案來自一個很小的映像。這裡,它首先從一個完全空的檔案系統開始,然後它複制建立的 /usr/local/bin/run.sh 為 script.sh ,然後運作腳本 /usr/local/bin/run.sh。

這這個教程中,我們學習了如何建構一個開箱即用的自定義 docker 基本映像。建構一個 docker 基本映像是一個很簡單的任務,因為這裡有很多已經可用的包和腳本。如果我們想要在裡面安裝想要的東西,建構 docker 基本映像非常有用。如果有任何疑問,建議或者回報,請在下面的評論框中寫下來。非常感謝!享受吧

原文釋出時間:2015-05-11

本文來自雲栖合作夥伴“linux中國”