天天看點

Docker Dockerfile詳解

dockerfile用來建立一個自定義的image,包含了使用者指定的軟體依賴等。目前目錄下包含dockerfile,使用指令build來建立新的image,并命名為edwardsbean/centos6-jdk1.7:

如何編寫一個dockerfile,格式如下:

基于哪個鏡像

安裝軟體用

鏡像建立者

container啟動時執行的指令,但是一個dockerfile中隻能有一條cmd指令,多條則隻執行最後一條cmd.

cmd主要用于container時啟動指定的服務,當docker run command的指令比對到cmd command時,會替換cmd執行的指令。如:

dockerfile:

運作一下試試:

一旦指令比對:

container啟動時執行的指令,但是一個dockerfile中隻能有一條entrypoint指令,如果多條,則隻執行最後一條

entrypoint沒有cmd的可替換特性

使用哪個使用者跑container

如:

container内部服務開啟的端口。主機上要用還得在啟動container時,做host-container的端口映射:

container ssh服務的22端口被映射到主機的33301端口

用來設定環境變量,比如:

将檔案<src>拷貝到container的檔案系統對應的路徑<dest>

所有拷貝到container中的檔案和檔案夾權限為0755,uid和gid為0

如果檔案是可識别的壓縮格式,則docker會幫忙解壓縮

如果要add本地檔案,則本地檔案必須在 docker build <path>,指定的<path>目錄下

如果要add遠端檔案,則遠端檔案必須在 docker build <path>,指定的<path>目錄下。比如:

docker-firefox目錄下必須有dockerfile和要add的檔案

<code>注意</code>:使用docker build - &lt; somefile方式進行build,是不能直接将本地檔案add到container中。隻能add url file.

add隻有在build鏡像的時候運作一次,後面運作container的時候不會再重新加載了。

可以将本地檔案夾或者其他container的檔案夾挂載到container中。

切換目錄用,可以多次切換(相當于cd指令),對run,cmd,entrypoint生效

onbuild 指定的指令在建構鏡像時并不執行,而是在它的子鏡像中執行