【Docker】 08-Dockerfile

news2024/12/31 4:54:27

在这里插入图片描述

什么是Dockerfile

Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的教程,主要作用是用来构建docker镜像的构建文件。

Dockerfile解析过程

在这里插入图片描述

Dockerfile的保留命令

保留字作用
FROM当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER镜像维护者的姓名和邮箱地址
RUN构建镜像时需要运行的指令
EXPOSE当前容器对外暴露出的端口号
WORKDIR指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV用来在构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME容器数据卷,用于数据保存和持久化工作
CMD指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被dockerrun之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
FROM
  • 基于哪个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像,必须作为Dockerfile的第一个指令出现
  • 语法
    FROM <image>
    FROM <iamge>[:tag] 使用版本不写为latest
    FROM <iamge>[@<digest>] 使用摘要
MAINTAINER
  • 镜像维护者的姓名和邮箱地址[不推荐使用了]
  • 语法:
    MAINTAINER <name>
RUN
  • RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步
  • 语法:
RUN <command> 
(shell form, thecommand is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)

RUN echo hello

RUN ["executable","param1""param2"] (exec form)
RUN [" /bin/bash","-c""echo hello"]
EXPOSE
  • 用来指定构建的镜像在运行为容器时对外暴露的端口
  • 语法:
    EXPOSE 80/tcp 如果没有显示指定则默认暴露都是tcp
    EXPOSE 80/udp
WORKDIR
  • 用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使它没有在任何后续Dockerfile指令中使用,它也将被创建。
  • 语法:
WORKDIR /path/to/workdir

WORKDIR /a
WORKDIR b
WORKDIR C
注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前WORKDIR指令的路径相对
ENV
  • 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。
  • 语法:
    ENV <key> <value>
    ENV <key>=<value>
ADD
  • 用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中。
  • 语法:
ADD hom* /mydir/            通配符添加多个文件
ADD hom?.txt /mydir/        通配符添加
ADD test.txt relativeDir/   可以指定相对路径
ADD test.txt /absoluteDir/  也可以指定绝对路径
ADD url
COPY
  • 用来将context目录中指定文件复制到镜像的指定目录中
  • 语法:
COPY src dest
COPY ["<src>",.... "<dest>"]
VOLUME
  • 用来定义容器运行时可以挂载在宿主机的目录。如果不指定,则任何目录都不能挂载成功。
  • 语法:
    VOLUME
CMD
  • 用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
  • 注意:Dockerfile中只能有一条CMD指令。如果列出多个命令,则只有最后一个命令才会生效。
  • 语法:
    CMD ["executable","param1", "param2"] (exec form, this is the preferred form)
    CMD [ "param1","param2"] (as default parameters to ENTRYPOINT)
    CMD command param1 param2 (shell form)
  • 在启动容器的时候,可以在启动命令的后面追加指令,这样就可以覆盖CMD指令
    例如:
    docker run xxxx ls /
ENTRYPOINT
  • 用来指定容器启动时执行命令,和CMD类似
  • 语法:
    ENTRYPOINT ["executable""param1"" param2" ]
    ENTRYPOINT command param1 param2
  • ENTRYPOINT指令,往往用于设置容器启动后的第一个命令,这对一个容器来说往往是固定的。CMD指令,往往用于设置容器启动的第一个命令的默认参数,这对一个容器来说可以是变化的

基于Dockerfile构建SpringBoot项目

1、准备好SpringBoot项目的jar包
2、把jar包上传到服务器
3、编写Dockerfile

FROM openjdk:8
WORKDIR /[目录名]
ADD xxx.jar /[目录名]
EXPOSE [项目端口号]
ENTRYPOINT ["java","-jar"]
CMD ["xxx.jar"]

4、构建镜像
docker buile -t xxx .
5、运行镜像
docker run -p [端口号]:[端口号] xxx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做一个答题小程序需要多少钱

做一个答题小程序需要多少钱呢&#xff1f;相信这是很多想做答题小程序的小伙伴非常关心的一个问题&#xff0c;那么今天我们就来分析一下做一个影响答题小程序价格的主要功能因素。 答题小程序开发成本的高低很大一部分是由具体的功能需求决定的&#xff0c;比如个人答题模式…

rk3399 linux 5.10 usb 2.0设备上电概率性注册失败

多次开关机&#xff0c;发现usb hub和4G都通信失败了&#xff0c;这就有点奇怪了&#xff0c;按理说usb驱动是没啥问题的 先查看usb log rootlinaro-alip:/# dmesg | grep usb [ 1.723797] usbcore: registered new interface driver usbfs [ 1.723828] usbcore: regis…

苹果平板如何录屏?这个方法亲测有效!

“苹果的平板可以录屏吗&#xff0c;买了个平板拿来上网课&#xff0c;但是老师讲课速度太快了&#xff0c;就想说录下来&#xff0c;可是找不到哪里可以录制&#xff0c;有人知道苹果平板如何录屏吗&#xff1f;” 苹果平板作为一款功能强大的设备&#xff0c;不仅适用于日常…

全网最全MySQL锁全面解析

目录 1. 锁的分类 1.1 从操作类型划分&#xff0c;分为读锁和写锁&#xff1b; 1.2 从锁的粒度划分&#xff0c;分为全局锁&#xff0c;表锁&#xff0c;页锁&#xff0c;行锁&#xff1b; 1.3 从锁的态度划分&#xff0c;分为乐观锁和悲观锁&#xff1b; 2. 读锁和写锁 …

说说JavaScript与DOM之间的关系

dom&#xff08;文档对象模型&#xff09;是JavaScript的一个组成部分&#xff0c;它为JavaScript提供处理网页内容的方法和接口&#xff1b;JavaScript对网页进行的所有操作都是通过DOM进行的。 完整的 JavaScript 是由以下三个部分组成&#xff1a; 核心&#xff08;ECMAScri…

elementui el-table在有summary-method时,table数据行将合计行遮挡住了

前端使用框架&#xff1a;elementUI 使用组件&#xff1a;el-table 在表格内添加合计了合计行&#xff0c;根据业务多次调用数据渲染画面后&#xff0c;偶然导致画面变成如下图所示&#xff0c;table的数据行将合计行遮挡住了&#xff0c;且这个现象有时候好用&#xff0c;有…

界面控件DevExpress .NET应用安全 Web API v23.1亮点:支持Swagger模式

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。 DevExpress 今年第一个重要版本v23.1日前已正式发布了&#xff0c;该版本拥有众多新产品和数十…

AI大模型的使用-深入使用LLMChain,给AI连上Google和计算器

今天涉及的内容如下&#xff0c;下面都会使用例子一一讲解使用&#xff0c; 1.1 utilities&#xff1a;langchain的python解析器 1.2 LLMMathChain&#xff1a;可以处理计算的链&#xff0c;内部用python解释器处理 1.3 LLMRequestsChain&#xff1a;通过一个 HTTP 请求来得…

Flink(java版)

watermark 时间语义和 watermark 注意:数据进入flink的时间&#xff1a;如果用这个作为时间语义就不存在问题&#xff0c;但是开发中往往会用处理时间 作为时间语义这里就需要考虑延时的问题。 如上图&#xff0c;数据从kafka中获取出来&#xff0c;从多个分区中获取&#xf…

DES和3DES等常见加解密的关键要素---安全行业基础篇3

DES和3DES DES和3DES是对称加密算法&#xff0c;其加密和解密的关键要素包括&#xff1a; 密钥&#xff1a;DES和3DES使用相同长度的密钥进行加密和解密。DES使用56位密钥&#xff0c;而3DES可以使用112位或168位密钥。密钥是保护数据安全的关键&#xff0c;必须保持机密并只…

港联证券:为什么人们买涨不买跌?

在股票市场中&#xff0c;有一个普遍的现象是人们倾向于买涨不买跌。即使在市场出现明显下跌趋势时&#xff0c;大部分投资者也会选择继续持有股票或者进行买入操作&#xff0c;而在股票呈现明显上涨趋势时&#xff0c;却有更多的人涌入市场追涨杀跌。究其原因&#xff0c;可能…

微信小程序+Springboot实现订阅消息推送 (demo)

1. 开通订阅消息 2. 选用模板 订阅消息 - 公共模板库 - 选用 3. 选择关键词 勾选关键词 - 最多勾选5个 - 显示例子 4. 我的模板 5. 订阅号开发者-文档: 发送订阅消息 | 微信开放文档 6. 依赖 <dependency><groupId>com.alibaba.fastjson2</groupId><art…

淘宝API接口解析,实现获得淘宝商品快递费用

要获取淘宝商品快递费用&#xff0c;需要使用淘宝的开放平台API接口。以下是一个基本的示例&#xff0c;解析并实现获取淘宝商品快递费用的API接口。 首先&#xff0c;你需要访问淘宝开放平台并注册一个开发者账号。注册完成后&#xff0c;你需要创建一个应用并获取到API的权限…

滑动窗口实例7(串联所有单词的子串)

题目&#xff1a; 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c;…

iPhone勿扰模式如何设置?1分钟学会!

上班的时候手机信息一直“噔、噔、噔”的响&#xff0c;开了静音模式也没用&#xff0c;信息一来手机还是会一直震动&#xff0c;搞得我无法安心工作&#xff0c;还有什么方法可以将这些信息免打扰吗&#xff1f; iPhone手机有一个功能叫做【勿扰模式】&#xff0c;它能够帮助用…

多numa设备,如何看网卡插在哪个numa上

1.在Linux系统中&#xff0c;可以通过lstopo命令来查看系统的NUMA拓扑结构。这个命令通常随着hwloc包一起提供。 安装hwloc包&#xff1a;yum install hwloc 使用lstopo命令来显示系统的NUMA拓扑结构。 &#xff08;在bclinux安装后&#xff0c;只有lstopo-no-graphics命令&…

TSN协议解读系列 | (2) Qbv:车间里的求知路

时春季夜间&#xff0c;风清月朗&#xff0c;周期仿佛又轮转到了从前。一位不修篇幅的老头&#xff0c;牙还没刷&#xff0c;却已然歪头斜躺在床上&#xff0c;床边微亮的显示屏上隐约可见Victory的字样&#xff0c;不一会儿就熄了屏。 这正是我们今天的主人公&#xff0c;Qbv…

微服务-gateway跨域配置

文章目录 一、前言二、gateway跨域配置1、问题描述1.1、什么是跨域请求&#xff1f;1.1.1、同源策略1.1.2. 安全性考虑1.1.3. 跨域攻击 1.2、问题产生原因 2、解决方法2.1、修改配置文件2.2、配置类统一配置2.3、全局跨域拦截器 三、总结 一、前言 在SpringCloud项目中&#x…

C++ - 继承 一些 细节 - 组合 和 继承的区别

前言 本篇博客基于 C - 继承_chihiro1122的博客-CSDN博客 之上列出一些例子&#xff0c;如果有需要请看以上博客。 继承的例子 例1 上述例子应该选择 C。 首先不用说&#xff0c;p3肯定是指向 d 对象的开头的&#xff1b;p1 也是指向 d 对象的开头的&#xff1b;…

网站监控系统最佳实践之静态资源采样上报

作者 观测云 产品服务部门 深圳团队 朱端畅 背景说明 通过 RUM 采集前端数据时&#xff0c;若采集的数据过多&#xff0c;可能会导致占用过多的网络带宽以及其他资源。特别是刚进入首页加载数据时&#xff0c;可能会调用几十次甚至更多次 v1/write/rum?precisionms数据采集接…