Dockerfile - 参数与详解

只有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
posted @ 2024-05-29 18:34  dkpp  阅读(20)  评论(0编辑  收藏  举报