[技术干货] dockerfile指令使用介绍

[复制链接]
乐维 发表于 2021-6-7 14:57:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
什么是dokerfile?
Dockerfile 是用来构建自定义 Docker 镜像的文本文档。我们通过docker build 命令用于从Dockerfile 文件构建镜像。如果你要构建自定义镜像,Dockerfile 是你必须学会的技能之一。
Dockerfile常用的指令
1FROM 指令
FROM <image>:<tag>
其中 tag 或 digest 是可选的,如果不使用这两个值时,会使用 latest 版本的基础镜像。
举例:From mysql:5.6
2LABEL 指令
LABEL:用于为镜像添加元数据,多用于声明构建信息,作者、机构、组织等。格式:
LABEL <key>=<value> <key>=<value> <key>=<value> ...
示例: LABEL version="1.0" description="felord.cn" by="Felordcn"
3ENV指令
ENV 用来设置环境变量,格式:
ENV <key> <value> # 之后的所有内容均会被视为其的组成部分,因此,一次只能设置一个变量
ENV <key>=<value> ... #可以设置多个变量,每个变量为一个"="的键值对,如果中包含空格,可以使用\来进行转义,也可以通过""来进行标识;另外,\ 也可以用于续行
示例: ENV version 1.0.0 或者 ENV version=1.0.0
4ARG指令
ARG 用于指定传递给构建运行时的变量,格式:
ARG <name>[=<default value>]
通过 docker run 中的 --build-arg <key>=<value> 来动态赋值,不指定将使用其默认值。
5WORKDIR指令
WORKDIR 用来指定工作目录,类似于我们通常使用的cd 命令,格式:
WORKDIR <PATH>
通过 WORKDIR 设置工作目录,Dockerfile 中的其它指令 RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行。在使用 docker run 运行容器时,可以通过 -w 参数覆盖构建时所设置的工作目录。
6ADD指令
ADD 用于将本地文件添加到镜像中,tar 类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似 wget,格式
示例: ADD home /path/ # 支持通配符 添加所有以"home"开头的文件 到/path/ 下
7COPY指令
COPY 的功能类似于 ADD,但是不会自动解压文件,也不能访问网络资源
8、RUN 指令
RUN 用来执行构建镜像时执行的命令,有以下两种命令执行方式:
shell 执行格式:
       RUN <command>
示例:RUN apk update
exec 执行格式:
RUN ["executable", "param1", "param2"]
示例: RUN ["/dev/file", "p1", "p2"]
需要注意的是:RUN 指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用缓存镜像,可在构建时指定 --no-cache 参数,示例:docker build --no-cache
9、CMD指令
CMD 构建容器后执行的命令,也就是在容器启动时才执行的命令。格式:
# 执行可执行文件,优先执行
CMD ["executable","param1","param2"]
# 设置了 ENTRYPOINT,则直接调用ENTRYPOINT添加参数  参见 CMD 讲解
CMD ["param1","param2"]
# 执行shell命令
CMD command param1 param2
示例: CMD ["/usr/bin/bash","--help"]
CMD 不同于 RUN,CMD 用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。





上一篇:PostgreSQL 12.3流复制断点恢复
下一篇:zabbix5.0自动发现Discover功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝0

帖子341

发布主题
最新发布

乐维社区

微信公众号

版权所有 © 2016-2021 九一乐维丨粤ICP备17007026号