FROMpython
FROM 是Dockerfile 最開頭的關鍵字,它制定了咱們要Build 的Docker image 的Base image 是什麼,就是咱們想在哪一個image 之上去Build 咱們的image ,如最開始的 Hello-world,它沒有依賴任何Base image ,這樣的話咱們就選FROM scratch ,從頭製做一個Base image ,更多的狀況是使用已有的Base image,好比說官方的centos 的已有的Base image ,而後FROM centos ,這樣的話能夠在centos 的基礎之上去Build image,一樣也能夠選擇一些其餘的Linux 發行版,如:ubntumysql
FROM 儘可能使用官方的image 做爲base image ->爲了安全sql
LABEL ubuntu
LABEL 這個語法在Dockerfile 裏面定義了咱們的image Metadatavim
對於LABEL 來說 Metadata 不可少!->對於image來說它必須有一些幫助信息,就像咱們日常瞭解的註釋同樣centos
RUN安全
python-dev # 反斜線換行 bash
pwgen --no-install-recommends && rm -rf \ 網絡
/var/lib/apt/lists/* #注意清理 cache curl
咱們每RUN 一次,對image 來說都會生成新的一層
RUN 爲了美觀,複雜的RUN請用反斜線換行!避免無用分層,合併多條命令成一行!
WORKDIR
WORKDIR 是設定當前公公目錄的,有點像Linux 中使用cd 改變當前目錄位置
WORKDIR 用WORKDIR,不要用 RUN cd!儘可能使用絕對目錄!
ADD and COPY
ADD hello test/ # /root/test/hello
COPY hello test/
ADD 和 COPY 很是像,都是經過把本地的文件添加到Docker image 裏面
ADD or COPY 大部分狀況,COPY優於ADD!ADD除了COPY還有額外功能(解壓)!添加遠程文件/目錄請使用curl或者wget!
ENV
&& rm -rf /var/lib/apt/lists/* # 引用常量
ENV 儘可能使用 ENV 增長可維護性!
VOLUME and EXPOSE (存儲和網絡)
CMD and ENTRYPOINT
要想對Dockerfile 有更加深刻的瞭解能夠搜索Dcokerfile reference 官網,裏面詳細的描述了Dockerfile 裏面的語法和語法的使用場景