label maintainer="[email protected]"
label version = "1.0"
label description="this is description"
metadata必不可少
run:執行命令並建立新的image layer
run yum update && yum install -y vim \
python-dev #反斜線換行
run apt-get update && apt-get install -y perl \
pwgen --no-install
-recommends
&& rm -rf
\ /var/lib/apt/lists/* #注意清理cache
run /bin/bash -c 'source $home/.bashrc; echo $home'
workdir /root
workdir /text #如果沒有會自動建立test目錄
workdir demo
run pwd
#輸出結果應該是/test/demo
用workdir,不要用run cd!盡量使用絕對目錄!
add hello /
add test.tar
.gz / #新增到根目錄並解壓
workdir /root
add hello test/ #/root/test/hello
workdir /root
copy hello test/
大部分情況,copy優於add,add除了copy還有額外功能(解壓)。新增遠端檔案/目錄盡量使用curl或者wget。
env mysql_version 5.6
#設定常量
run apt-get install -y mysql-server= "$" \
&& rm -rf /var/lib/apt/lists/* #引用常量
主要用於儲存和網路
cmd:
from centos
env name docker
cmd echo
"hello $name"
docker run -it [image]/bin/bash輸出?
entrypoint:
cpoy docker-entrypoint
.sh /usr/local/bin/
entrypoint [
"docker-entrypoint.sh"
]expose 27017
cmd
["mongod"
]
兩種格式:shell 和 excel 格式run apt-get install -y vim
cmd echo
"hello docker"
entrypoint echo
"hello docker"
run ["apt-get" , "install" , "-y" , "vim"]
cmd ["/bin/echo","hello docker"]
entrypoint["/bin/echo","hello docker"]
dockerfile 示例from centos #定義乙個base iamge
env name docker #定義個常量
entrypoint echo
"hello $name"
#執行echo命令
from centos
env name docker
entrypoint ["/bin/bash","-c","echo hello $name"]
Dockerfile語法梳理和最佳實踐
dockerfile裡面定義了許多關鍵字,如from run等等,通過這些關鍵字來定義dockerfile。from通常是dockerfile最開頭的語法,這個語法指定了base image是什麼,即想在哪個base image之上build。label用於描述作者資訊 版本號等資訊,label有點...
dockerfile最佳實踐
1 使用.dockerignore檔案 早多數情況下,最好把dockerfile放在乙個空的目錄中,然後在該目錄中新增所需要的檔案,為了提高構建的效能,可以通過新增.dockerignore來排除一些檔案 怎麼建立乙個.dockerignore檔案,可以參考該文件.dockerignore 2 避免...
Dockerfile 最佳實踐
reference intro guide to dockerfile best practices 本文涉及以下幾方面 在一次發布過程中,映象可能會經過多次重建 rebuild 最後發布 release docker 映象在構建過程中,會保留快取 cache 在重建的過程中可以降低構建時間.所以,...