只有FROM時必須的
# 在當前路徑下構建test映象,執行Dockerfile檔案
docker build -t test .
1.FROM
制定基於那個映象進行構建
FROM alpine:latest
2.WORKDIR
指定工作目錄,執行shell指令碼的工作目錄
WORKDIR /app
3.COPY ADD
複製檔案,將宿主機檔案複製到映象中
ADD可以是網路資源,並且可以解壓;COPY一定是宿主機上的資源
COPY src/ /app
4.RUN
執行的shell指令碼,執行在指定的工作目錄下,且在映象構建時執行
RUN echo 321 >> 1.txt
5.CMD ENTRYPOINT
執行的shell指令碼,執行在指定的工作目錄下,且在容器執行時執行
非json陣列按ENTRYPOINT,其他進行拼接
# 阻塞
CMD tail -f 1.txt
CMD ["tail", " -f ", "1.txt"]
# 非阻塞
CMD cat 1.txt
# 在映象啟動過程中也會出現該現象 非阻塞容器會變成stop狀態,執行完畢
6.EXPOSE
暴露的埠
# nginx映象中有
EXPOSE 80
這樣可以使用docker run -p -v 來指定埠和儲存卷
7.VOLUME
需要掛載的儲存卷目錄
VOLUME /app/src
8.ENV
指定環境變數
ENV a=10
CMD echo $a
9.ARG
指定構建變數
docker build -t test --build-arg b=12 .
可以在構建時該引數
ARG b=10
ENV a=$b
CMD echo $a
10.LABEL
指定一些標識,一般寫在Dockerfile的第二行
LABEL k1="v1" k2="v2"
這樣在docker inspect test
可以看到這個label,沒有其他作用,就是用來標識的
11.ONBUILD
指定出的變數,是隻有基於生成的映象再進行構建時才會生效
ONBUILD ENV c=100
12.STOPSIGNAL
13.HEALTHCHECK
14.SHELL
指定執行指令碼型別
# linux預設的
SHELL /bin/sh
# windows預設的
SHELL cmd
SHELL /bin/bash