編寫Dockerfile的方法

1 語法格式

Dockerfile的語法格式以下git

# 註釋
命令 參數

其中,<命令>是不區分大小寫的。但爲了同後面的參數區分開來,一般寫成大寫字母。docker

2 註釋

在Dockerfile中,以#開頭的行是註釋。註釋不會影響docker build的執行過程。ssh

2.1 註釋中的指示

註釋中若是出現格式爲ui

# directive=value

的內容,會被看成指示進行處理。spa

2.1.1 escape指示

escape指示的用法爲進程

# escape=\

開發

# escape=`

3 環境變量

部分指令支持在參數中使用環境變量。環境變量的語法格式以下:get

$variable_name
${variable_name}

環境變量支持一些變形用法,如jenkins

${variable:-word} # 若是variable已設置,表達式以variable爲結果,不然表達式以word爲結果。

dockerfile

${variable:+word} # 若是變量variable已設置,表達式以word爲結果。

支持環境變量的命令有

ADD
COPY
ENV
EXPOSE
LABEL
USER
WORKDIR
VOLUME
STOPSIGNAL

4 dockerignore文件

在使用docker build構建鏡像時,docker會將工做目錄(包括其中的文件和子目錄)做爲context發送給構建進程。對於構建過程當中不會被用到的文件,能夠把這些文件的名字寫在.dockerfile文件中,以加速構建過程。 dockerignore文件中每一個文件名佔一行,並支持通配符,如

*~
*/*/temp/*
temp?

5 命令

5.1 首個命令FROM

Dockerfile的第一個命令必須是FROM。FROM命令用於定義基準鏡像。後續一切命令都是在基準鏡像上進行操做。 FROM命令的用法爲

FROM <image>[:<tag>]

FROM <image>@<digest>

5.2 MAINTAINER命令

MAINTAINER指令指明瞭Dockerfile的維護者。MAINTAINER命令的用法爲

MAINTAINER <name>

5.3 RUN命令

RUN命令用於在基礎鏡像中執行程序。RUN命令的語法爲

RUN <command>

RUN ["executable", "param1", "param2"]

5.4 CMD命令

CMD命令用於爲可執行容器指定默認行爲。CMD指令在一個Dockerfile中最多出現一次,其語法爲

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

CMD ["param1", "param2"] # 以param一、param2爲參數執行ENTRYPOINT

CMD command param1 param2

5.5 LABEL命令

LABEL命令爲鏡像增長一組鍵值對做爲元信息。

LABEL <key>=<value> <key2>=<value2>

5.6 EXPOSE命令

EXPOSE命令告訴docker容器須要監聽指定的端口。

EXPOSE <port> [<port>...]

5.7 ENV命令

ENV命令用於設置環境變量。

ENV <key> <value>
ENV <key>=<value>

5.8 ADD命令

複製文件、目錄或URL。

ADD <src>... <dest>

5.9 COPY命令

複製文件、目錄或URL。

COPY <src>... <dest>

5.10 ENTRYPOINT命令

ENTRYPOINT定義了容器運行的程序。

ENTRYPOINT command param1 param2

5.11 VOLUME命令

VOLUME命令將外部存儲掛載爲容器內的目錄。

VOLUME ["/data"]

5.12 USER命令

設置執行RUN/CMD/ENTRYPOINT命令時使用的用戶。

USER <username_or_userid>

5.13 WORKDIR命令

設置執行RUN/CMD/ENTRYPOINT命令時使用目錄。

WORKDIR <path/to/work/directory>

5.14 ARG命令

設置構建期參數。

ARG <name>[=<default value>]

6 Dockerfile示例

6.1 使用Alpine構建Go開發環境

FROM alpine

MAINTAINER Wang Qian

VOLUME ["/home/git", "/data/repo"]

RUN apk update
RUN apk add go
RUN apk add make
RUN apk jenkins
RUN apk git
RUN apk openssh

RUN addgroup git
RUN adduser -h /home/git -s /bin/false -S -G git git

CMD /bin/sh

7 參考

相關文章
相關標籤/搜索