Dockerfile - 引數與詳解

dkpp發表於2024-05-29

只有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

相關文章