2013-08-16 23 views
76

根據Docker documentation,要構建自己的圖像,必須始終使用FROM指令指定基本圖像。如何爲Docker製作我自己的基礎映像?

顯然,在the Docker index中有很多圖像可供選擇,但如果我想構建自己的圖像呢?那可能嗎?

如果我理解正確,圖像base是由Ubuntu構建的,我想用Debian圖像進行試驗。另外,我想真正瞭解Docker的工作方式,而base圖像對我來說仍然是一個黑盒子。

+0

無所謂。 :-)根據網站的指導方針,這裏的問題仍然需要進行專題討論。它們覆蓋在[幫助]和[關於]頁面上。 (這裏的鏈接似乎也適用於Docker容器的開發人員。)如果您詢問自己的容器映像,那麼[在他們的網站上]有一個工具(http://docs.docker.io/en/latest/use/builder /#dockerbuilder_) –

+0

@KenWhite:related meta question:http://meta.stackexchange.com/questions/179249/why-is-this-docker-question-off-topic – Flimm

+0

:-)相關[meta答案](http://meta.stackexchange.com/a/179250/172661)在這個時間點,這是你的答案。 (尤其請參閱我鏈接的答案的第二個評論,關於你問題的要求的清晰度。) –

回答

29

你可以看看如何創建基本圖像並從那裏開始。

你可以在這裏找到它們:https://github.com/dotcloud/docker/tree/master/contrib。 有mkimage-busybox.sh,mkimage-unittest.sh,mkimage-debian.sh

+0

mkimage- *腳本已被移動並重命名(正如官方的repo)到[這裏](https://github.com/docker/docker/tree/master/contrib/mkimage) – tsalaroth

28

報價Solomon Hykes

您可以輕鬆地從 「泊塢窗進口」 的任何tar文件創建一個新的容器。例如:

debootstrap raring ./rootfs 
tar -C ./rootfs -c . | docker import - flimm/mybase 
+0

也許在評論中發佈編輯/更新,所以其他人可以看到它,也許有人可以重新提交編輯。 – Bdoserror

+1

@Flimm爲什麼我需要在這種情況下使用sudo?在你的用戶目錄中運行這些命令,你應該沒有理由提升權限。您正在創建一個圖像,而不是安裝它。 – rancidfishbreath

+0

你甚至不需要root用於正常的Docker使用;只需將自己添加到「docker」組。 – tekknolagi

16

(信貸fatherlinux)從http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/,這也解釋了更好

  1. 創建tar文件的文件系統獲取的信息,簡直是

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar/
    
  2. 將tar文件轉移到其他碼頭系統(如果未在本地安裝),並且import

    cat centos6-base.tar | docker import - centos6-base 
    
  3. 現在您可以通過運行它進行驗證。

    docker run -i -t centos6-base cat /etc/redhat-release 
    

scripts from dotcloud結合前兩個步驟一起這使我困惑,並在一開始看起來比較複雜。

碼頭official guideline使用debootstrap也試圖使乾淨的文件系統。

你可以自己判斷怎麼做步驟1

6

如果你想使自己的基地形象還是先看看 Official Images,特別是stackbrew回購裏面。

否則,對於docker repo本身的最小操作系統映像有一些很好的參考。

例如,這裏是一個用於製作最小拱形圖像的script,還有更多here

相關問題