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