Dockerfile語法及最佳實踐

2021-08-22 14:57:02 字數 2221 閱讀 3634

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 在重建的過程中可以降低構建時間.所以,...