Dockerfile是一個包含用於組合映像的命令的文字文件。可以使用在命令列中呼叫任何命令。 Docker通過讀取Dockerfile
中的指令自動生成映像。
docker build
命令用於從Dockerfile構建映像。可以在docker build
命令中使用-f
標誌指向檔案系統中任何位置的Dockerfile。
$ docker build -f /path/to/a/Dockerfile
說明不區分大小寫,但必須遵循建議使用大寫字母的約定。
Docker以從上到下的順序執行Dockerfile的指令。為了指定基本映像,第一條指令必須是FROM。
一個宣告以#
字元開頭則被視為註釋。可以在Docker檔案中使用RUN
,CMD
,FROM
,EXPOSE
,ENV
等指令。
在這裡列出了一些常用的說明。
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中的RUN
,CMD
和COPY
指令設定工作目錄。如果工作目錄不存在,它預設將會建立。
我們可以在Dockerfile檔案中多次使用WORKDIR
。