Docker Dockerfile


Dockerfile是一個包含用於組合映像的命令的文字文件。可以使用在命令列中呼叫任何命令。 Docker通過讀取Dockerfile中的指令自動生成映像。

docker build命令用於從Dockerfile構建映像。可以在docker build命令中使用-f標誌指向檔案系統中任何位置的Dockerfile。

$ docker build -f /path/to/a/Dockerfile

Dockerfile檔案說明

說明不區分大小寫,但必須遵循建議使用大寫字母的約定。

Docker以從上到下的順序執行Dockerfile的指令。為了指定基本映像,第一條指令必須是FROM

一個宣告以字元開頭則被視為註釋。可以在Docker檔案中使用RUNCMDFROMEXPOSEENV等指令。

在這裡列出了一些常用的說明。

FROM

該指令用於設定後續指令的基本映像。有效的Dockerfile必須使用FROM作為其第一條指令。

FROM ubuntu

LABEL

可以為映像新增標籤來組織專案的映像。需要使用LABEL指令設定映像的標籤。

LABEL vendorl = "YiiBai"

RUN

該指令用於執行當前映像的任何命令。

RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'

CMD

這用於執行映像的應用程式。應該以下列形式總是使用CMD -

CMD ["executable", "param1", "param2"?]

這是使用CMD的首選方法。Dockerfile檔案中只能有一個CMD。如果使用多個CMD,則只會執行最後一個CMD

COPY

該指令用於將來自源的新檔案或目錄複製到目的地的容器的檔案系統。

COPY abc/ /xyz

規則

  • source路徑必須在構建的上下文之內。無法使用COPY ../something /something,因為docker構建的第一步是將上下文目錄(和子目錄)傳送到docker守護程式。

  • 如果source是目錄,則會複製目錄的全部內容,包括檔案系統後設資料。

WORKDIR

WORKDIR用於為Dockerfile中的RUNCMDCOPY指令設定工作目錄。如果工作目錄不存在,它預設將會建立。

我們可以在Dockerfile檔案中多次使用WORKDIR