docker docs

weixin_34214500發表於2018-07-30

File formats
Dockerfile reference

  • Docker可以通過讀取來自 Dockerfile 的指令自動構建映象.
  • Dockerfile是一個文字文件,其中包含使用者可以在命令列上呼叫以合成映象的所有命令.
  • 使用docker build 使用者可以建立一個連續執行多個命令列指令的自動構建.
  • docker build命令根據Dockerfile上下文構建映象
  • 構建的上下文是指指定位置PATH或的檔案集URL
  • PATH是本地檔案系統上的目錄。URL是一個Git儲存庫位置
  • 遞迴處理上下文. 因此,a PATH包括所有子目錄,URL包括儲存庫及其子模組.
  • 構建由Docker守護程式執行,而不是由CLI執行.
  • 構建過程的第一件事是將整個上下文(遞迴地)傳送到守護程式.
  • 在大多數情況下,最好從空目錄開始作為上下文,並將Dockerfile儲存在該目錄中. 僅新增構建Dockerfile所需的檔案
  • warning: 不要用你的根目錄下,/作為PATH因為它會導致生成到您的硬碟驅動器的全部內容傳輸到碼頭工人守護程式
  • 要在構建上下文中使用檔案,請Dockerfile引用指令中指定的檔案,例如COPY指令
  • 要提高構建的效能,請通過向.dockerignore上下文目錄新增檔案來排除檔案和目錄.
  • 可以使用-f標誌 docker build 指向檔案系統中任何位置的 Dockerfile
    docker build -f /path/to/a/Dockerfile
    如果構建成功,您可以指定儲存庫和標記以儲存新影像:
    docker build -t shykes/myapp .
    要在構建後將映像標記為多個儲存庫,請在-t執行build命令時新增多個引數:
    docker build -t shykes/myapp:1.0.2 -t shykes/myapp:latest .
  • Docker守護程式逐個執行Dockerfile中的指令,在必要時將每條指令的結果提交給新映象,最後輸出新影像的ID。Docker守護程式將自動清理您傳送的上下文
  • 請注意,每條指令都是獨立執行的,會導致建立新影像 - 因此RUN cd /tmp不會對下一條指令產生任何影響.

Format

# Comment
INSTRUCTION arguments

該指令不區分大小寫。但是,慣例是讓它們成為大寫的,以便更容易地將它們與引數區分開來。
Docker Dockerfile按順序執行指令。
一個Dockerfile 必須用FROM指令啟動。該FROM指令指定您正在構建的基本映像.

Parser directives 解析器指令

解析器指令是可選的,並且影響Dockerfile處理中後續行的方式
解析器指令在表單中被寫為特殊型別的註釋# directive=value
解析器指令不區分大小寫。但是,慣例是它們是小寫的。約定還包括任何解析器指令後面的空行。解析器指令不支援行繼續符。

escape

# escape=\ (backslash)
# escape=` (backtick)
該escape指令設定用於轉義字元的字元 Dockerfile。如果未指定,則預設轉義字元為\

相關文章