五、Dockerfile語法梳理

一、FROM

FROM 關鍵字一般用於開頭,去指定我們要build的image是基於什麼image的。

  • FROM scratch
    不基於任何鏡像去構建
  • FROM centos
    基於官方的centos去構建

最佳實踐:儘量使用官方的image作爲base image
原因很簡單:爲了安全!!!

二、LABEL

定義了image的mata data
相當於註釋,標註作者、image的用途等

三、RUN

經常用的一個關鍵字,基於base image之上去運行一些命令的時候需要用到這個關鍵字。
對於image來講,每運行一次RUN,就會產生新的一層
最佳實踐:爲了美觀,複雜的RUN請用反斜線換行,避免無用分層,合併多條命令成一行

四、WORKDIR

設定當前工作目錄,相當於在linux中的cd,然後在當前目錄下去做事情。


最佳實踐:
1,用WORKDIR,不要用RUN cd
2.儘量使用絕對目錄,不要使用相對目錄

五、ADD COPY

將本地的文件添加到docker的image裏面。
區別:ADD不僅可以添加、複製文件,還可以解壓縮。


最佳實踐:
1,大部分情況,COPY優於ADD
2.ADD除了COPY還有額外功能(解壓)
3.添加遠程文件/目錄請使用curl或者wget

五、ENV

聲明一個常量


最佳實踐:
儘量使用ENV增加可維護性

六、比較RUN、CMD、ENTRYPOINT

RUN:執行命令並創建愛你新的image layer
CMD:設置容器啓動後默認執行的命令和參數
ENTRYPOINT:設置容器啓動時運行的命令

1.兩種格式
2.CMD
  • 容器啓動時默認執行的命令
  • 如果docker run指定了其他的命令,CMD命令被忽略
  • 如果定義了多個CMD,則只執行最後一個
3.ENTRYPOINT
  • 讓容器以應用程序或者服務的形式運行
  • 不會被忽略,一定會執行
  • 最佳實踐:寫一個shell腳本作爲entrypoint


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章