栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Docker之Dockerfile关键字简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker之Dockerfile关键字简介

我们可以参照tomcat的dockerfile的编写 点击,也可以参照菜鸟教程的解析 点击

FROM

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

MAINTAINER

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

RUN

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

两种格式 shell格式

exec格式

EXPOSE

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

WORKDIR

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

如果我们没有指定当前关键字,那么就下启动的目录下运行如果指定了,那么就会在指定的目录下运行容器实例 USER

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

ENV

相当于定义变量: 用来在构建镜像过程中设置环境变量

# 定义
ENV 变量名 值
# 使用
$变量名

关键字之后可以直接跟变量名

ADD

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

COPY
# 语法一
COPY src dest
# 语法二
COPY ["src", "dest"]

拷贝文件和目录到镜像中,容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建

VOLUME

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

CMD

指定容器启动后的要干的事情,类似于RUN

第一种方式

shell格式

CMD <命令>
第二种方式

推荐使用第二种方式,执行过程比较明确。第一种格式实际上在运行的过程中也会自动转换成第二种格式运行,并且默认可执行文件是 sh

exec

CMD ["<可执行文件或命令>","","",...] 
CMD ["","",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
注意

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

CMD是在docker run 时运行RUN是在 docker build时运行 ENTRYPOINT

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

ENTRYPOINT ["","","",...]

可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参

也就是说当我们指定了ENTRYPOINT之后,CMD的含义就发生了变化,不再是直接运行命令,而是将CMD命令的内容作为参数传递给ENTRYPOINT 指令最终会组合成 ENTRYPOINT ""

FROM nginx

ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参 

注意

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号