Dockerfile常见指令dockerfile关键字

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。
基础的小linux系统。jdk;
一般而言,Dockerfile可以分为四部分
基础镜像信息 维护者信息 镜像操作指令 启动时执行指令

常见的dockerfile指定、dockerfile关键字

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

FROM

基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from

使用说明

FROM [--platform=<platform>] <image> [AS <name>]
FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]

MAINTAINER

镜像维护者的姓名和邮箱地址

使用说明

MAINTAINER <name>

RUN

容器构建时需要运行的命令

RUN是在 docker build时运行

使用说明

RUN <command>
RUN ["executable", "param1", "param2"]

当有多条命令无法使用一行完成时可以使用 \ 在行末尾分隔便于阅读

RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'

RUN是在 docker build时运行

CMD

指定容器启动后的要干的事情

使用说明

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

Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

ps: 这里的 docker run 指的是命令行的创建容器的那个命令
CMD是在docker run 时运行

ENTRYPOINT

也是用来指定一个容器启动时要运行的命令
类似于 CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序

使用说明

ENTRYPOINT command param1 param2
ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT可以和CMD一起用,一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参
当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指令,他两个组合会变成

ENTRYPOINT command "<CMD>"

在执行docker run的时候可以指定 ENTRYPOINT 运行所需的参数
如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

EXPOSE

当前容器对外暴露出的端口

使用说明

EXPOSE <port> [<port>/<protocol>...]

WORKDIR

指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

使用说明

WORKDIR /path/to/workdir

USER

指定该镜像以什么样的用户去执行,如果都不指定,默认是root

使用说明

USER <user>[:<group>]
USER <UID>[:<GID>]

ENV

用来在构建镜像过程中设置环境变量

使用说明

ENV <key>=<value> ...

应用列举

ENV MY_PATH /usr/mytest

这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;
也可以在其它指令中直接使用这些环境变量,

比如: WORKDIR $MY_PATH

VOLUME

容器数据卷,用于数据保存和持久化工作

使用说明

VOLUME ["/data"]

COPY

拷贝文件和目录到镜像中,将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置

使用说明

COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]

<dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

ADD

将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包

使用说明

ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

<dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

ONBUILD

当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的onbuild被触发

使用说明

ONBUILD <INSTRUCTION>

LABEL

解释说明

使用说明

LABEL <key>=<value> <key>=<value> <key>=<value> ...

可以使用多个LABEL
也可以使用 \ 进行换行处理

HEALTHCHECK

用于指定某个程序或者指令来监控 docker 容器服务的运行状态

ARG

构建参数,与 ENV 作用一至。不过作用域不一样。 ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发
程序员吾非同的头像-程序员吾非同

昵称

取消
昵称表情代码图片