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 - < somefile方式進行build,是不能直接将本地檔案add到container中。隻能add url file.
add隻有在build鏡像的時候運作一次,後面運作container的時候不會再重新加載了。
可以将本地檔案夾或者其他container的檔案夾挂載到container中。
切換目錄用,可以多次切換(相當于cd指令),對run,cmd,entrypoint生效
onbuild 指定的指令在建構鏡像時并不執行,而是在它的子鏡像中執行