Dockerfile構建的基本用法
使用docker build命令通過Dockerfile和構建上下文(Build Context)構建鏡像。
```bash
docker build [選項] 路徑 | URL | -
```
構建上下文是由文件路徑或一個URL(Git倉庫位置)定義的一組文件。使用當前目錄作為構建上下文的簡單構建命令如下。
```bash
docker build .
```
鏡像構建由Docker守護進程而不是命令行接口運行。構建過程中一開始將整個構建上下文遞歸地發送給守護進程。
要使用構建上下文中的文件,可由Dockerfile引用由指令(例如COPY)指定的文件。
按照習慣,將Dockerfile文件直接命名為“Dockerfile”,并置于構建上下文的根位置。
Docker守護進程逐一執行Dockerfile中的指令。
Dockerfile中的每條指令都被獨立執行并創建一個新鏡像,RUN cd /tmp等命令就不會對下一條指令產生影響。
只要有可能,Docker將重用過程中的中間鏡像(緩存),以加速構建過程。
Dockerfile格式
\# 注釋
指令 參數
指令不區分大小寫,建議大寫。指令可以指定若干參數。
Docker按順序執行其中的指令。Dockerfile文件必須以FROM指令開頭。FROM指令之前唯一允許的是ARG指令(用于定義變量)。
以“#”符號開頭的行都將被視為注釋,除非是解析器指令(Parser Directive)。
解析器指令是可選的,它會影響處理Dockerfile中后續行的方式。
一旦注釋、空行或構建器指令被處理,Docker就不再搜尋解析器指令。
Docker可使用解析器指令escape設置用于轉義字符的字符。如果未指定,則默認轉義字符為反斜杠“\”。
```bash
Dockerfile 是由一行行命令語句組成,并且支持已 # 開頭的注釋行
一般來說,我們可以將 Dockerfile 分為四個部分:
基礎鏡像(父鏡像)信息指令 FROM
維護者信息指令 MAINTAINER
鏡像操作指令 RUN 、ENV、ADD 和 WORKDIR 等
容器啟動指令 CMD 、ENTRYPOINT 和 USER 等