兩種方式建立你自己的 Docker 基本映像
歡迎大家,今天我們學習一下 docker 基本映像以及如何構建我們自己的 docker 基本映像。Docker 是一個開源專案,提供了一個可以打包、裝載和執行任何應用的輕量級容器的開放平臺。它沒有語言支援、框架和打包系統的限制,從小型的家用電腦到高階伺服器,在何時何地都可以執行。這使它們可以不依賴於特定軟體棧和供應商,像一塊塊積木一樣部署和擴充套件網路應用、資料庫和後端服務。
Docker 映像是不可更改的只讀層。Docker 使用 Union File System 在只讀檔案系統上增加可讀寫的檔案系統,但所有更改都發生在最頂層的可寫層,而其下的只讀映像上的原始檔案仍然不會改變。由於映像不會改變,也就沒有狀態。基本映像是沒有父類的那些映像。Docker 基本映像主要的好處是它允許我們有一個獨立執行的 Linux 作業系統。
下面是我們如何可以建立自定義的基本映像的方式。
1. 使用 Tar 建立 Docker 基本映像
我們可以使用 tar 構建我們自己的基本映像,我們從一個執行中的 Linux 發行版開始,將其打包為基本映像。這過程可能會有些不同,它取決於我們打算構建的發行版。在 Debian 發行版中,已經預帶了 debootstrap。在開始下面的步驟之前,我們需要安裝 debootstrap。debootstrap 用來獲取構建基本系統需要的包。這裡,我們構建基於 Ubuntu 14.04 "Trusty" 的映像。要完成這些,我們需要在終端或者 shell 中執行以下命令。
$ sudo debootstrap trusty trusty > /dev/null
$ sudo tar -C trusty -c . | sudo docker import - trusty
上面的命令為當前資料夾建立了一個 tar 檔案並輸出到標準輸出中,"docker import - trusty" 通過管道從標準輸入中獲取這個 tar 檔案並根據它建立一個名為 trusty 的基本映像。然後,如下所示,我們將執行映像內部的一條測試命令。
$ docker run trusty cat /etc/lsb-release
Docker GitHub Repo 中有一些允許我們快速構建基本映像的事例指令碼.
2. 使用Scratch構建基本映像
在 Docker registry 中,有一個被稱為 Scratch 的使用空 tar 檔案構建的特殊庫:
$ tar cv --files-from /dev/null | docker import - scratch
我們可以使用這個映像構建新的小容器:
FROM scratch
ADD script.sh /usr/local/bin/run.sh
CMD ["/usr/local/bin/run.sh"]
上面的 Dockerfile 檔案來自一個很小的映像。這裡,它首先從一個完全空的檔案系統開始,然後它複製新建的 /usr/local/bin/run.sh 為 script.sh ,然後執行指令碼 /usr/local/bin/run.sh。
結尾
這這個教程中,我們學習瞭如何構建一個開箱即用的自定義 Docker 基本映像。構建一個 docker 基本映像是一個很簡單的任務,因為這裡有很多已經可用的包和指令碼。如果我們想要在裡面安裝想要的東西,構建 docker 基本映像非常有用。如果有任何疑問,建議或者反饋,請在下面的評論框中寫下來。非常感謝!享受吧 :-)
via: http://linoxide.com/linux-how-to/2-ways-create-docker-base-image/
作者:Arun Pyasi
譯者:ictlyh
校對:wxy
相關文章
- 兩種方式建立支援SSH服務的docker映象Docker
- Docker打包映象的兩種方式Docker
- 建立Session物件的兩種方式Session物件
- 建立oracle dblink 的兩種方式Oracle
- 建立ASM磁碟有兩種方式!ASM
- ubuntu建立使用者的兩種方式Ubuntu
- java執行緒建立的兩種方式Java執行緒
- hibernate中建立session的兩種方式方式,區別在哪裡?Session
- webapi透過docker部署到Linux的兩種方式WebAPIDockerLinux
- activemq的兩種基本通訊方式的使用及總結MQ
- 兩種方式建立sqlserver連結伺服器SQLServer伺服器
- Windows從命令列建立文字檔案的兩種方式Windows命令列
- 多執行緒的建立 兩種方式以及使用建議執行緒
- ChatTTS的兩種使用方式TTS
- Docker映像的Zabbix元件安裝Docker元件
- GCD底層實現理解以及建立單例的兩種方式GC單例
- JavaScript建立閉包的兩種方式的優劣與區別分析JavaScript
- 【java】【多執行緒】建立執行緒的兩種常用方式(2)Java執行緒
- JS 垃圾回收的兩種方式JS
- sparkrdd轉dataframe的兩種方式Spark
- 提交Application的兩種方式APP
- java建立物件的五種方式Java物件
- Java 建立類的四種方式Java
- javascript建立物件的三種方式JavaScript物件
- js建立物件的幾種方式JS物件
- JavaScript 建立物件的七種方式JavaScript物件
- javascript建立物件的幾種方式JavaScript物件
- JavaScript類建立的幾種方式JavaScript
- Windows的程式建立和映像裝入Windows
- Laravel指東:使用模型建立 uuid 主鍵資料的兩種方式Laravel模型UI
- Docker容器進入的4種方式Docker
- zabbix agent 的兩種安裝方式
- HTTP代理的兩種連線方式HTTP
- redis的php驅動兩種方式RedisPHP
- JavaScript 函式的兩種宣告方式JavaScript函式
- RAC時間同步的兩種方式
- SSH綜合查詢的兩種方式
- easyUI 初始化的兩種方式UI