dockerfile用來建立乙個自定義的image,包含了使用者指定的軟體依賴等。當前目錄下包含dockerfile,使用命令build來建立新的image,並命名為edwardsbean/centos6-jdk1.7:
docker build -t edwardsbean/centos6-jdk1.7 .
如何編寫乙個dockerfile,格式如下:
from# comment
instruction arguments
基於哪個映象
run安裝軟體用
maintainer
映象建立者
cmdcontainer啟動時執行的命令,但是乙個dockerfile中只能有一條cmd命令,多條則只執行最後一條cmd.
cmd主要用於container時啟動指定的服務,當docker run command的命令匹配到cmd command時,會替換cmd執行的命令。如:
dockerfile:
cmd echo hello world
執行一下試試:
一旦命令匹配:edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd
hello world
entrypointedwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello edwardsbean
hello edwardsbean
container啟動時執行的命令,但是乙個dockerfile中只能有一條entrypoint命令,如果多條,則只執行最後一條
entrypoint沒有cmd的可替換特性
user
使用哪個使用者跑container
如:
exposeentrypoint ["memcached"]
user daemon
container內部服務開啟的埠。主機上要用還得在啟動container時,做host-container的埠對映:
docker run -d -p 127.0.0.1:33301:22 centos6-ssh
container ssh服務的22埠被對映到主機的33301埠
env用來設定環境變數,比如:
addenv lang en_us.utf-8
env lc_all en_us.utf-8
將檔案拷貝到container的檔案系統對應的路徑
所有拷貝到container中的檔案和資料夾許可權為0755,uid和gid為0
如果檔案是可識別的壓縮格式,則docker會幫忙解壓縮
注意
:使用docker build - < somefile方式進行build,是不能直接將本地檔案add到container中。只能add url file.
volume
可以將本地資料夾或者其他container的資料夾掛載到container中。
workdir
切換目錄用,可以多次切換(相當於cd命令),對run,cmd,entrypoint生效
onbuild
onbuild 指定的命令在構建映象時並不執行,而是在它的子映象中執行
詳見here
Dockerfile檔案配置介紹
dockerfile用來建立乙個自定義的image,包含了使用者指定的軟體依賴等。當前目錄下包含dockerfile,使用命令build來建立新的image,並命名為edwardsbean centos6 jdk1.7 docker build t edwardsbean centos6 jdk1....
Dockerfile 配置檔案詳解
docker 可以通過讀取 dockerfile 配置檔案自動生成映象,也可以直接通過 docker 命令或 docker pull 命令生成映象。dockerfile解決了自動化的問題。使用docker build命令即可執行檔案中的所有命令,減少了映象和容器的建立過程,簡化了部署。dockerf...
Dockerfile檔案詳解
一 dockerfile檔案 二 配置檔案詳解 1.from centos 我們的docker是基於哪個基礎映象的 我們的工作目錄 3.copy metadata metadata 將本地的專案拷貝到docker內部 4,run命令 在docker內部執行一下命令,可以是安裝軟體,新建資料夾等操作 ...