当前位置: 首页 > news >正文

dockerfile 命令详解(三)

CMD 和 ENTRYPOINT 区别

CMD            #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT    #指定这个容器启动的时候要运行的命令,可以追加命令

FROM		#基础镜像,一切从这里开始构建
MAINTAINER	#镜像是谁写的,姓名+邮箱
RUN			#镜像构建的时候需要运行的命令
ADD			#步骤,tomcat镜像,这个tomcat的压缩包!添加内容
WORKDIR		#镜像的工作目录	
VOLUME		#挂载的目录
EXPOSE		#暴露端口配置
CMD			#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		#当构建一个被继承 Dockerfile 这个时候就会运行ONBUILD 的指令
COPY 		#类似ADD,将我们文件拷贝到镜像中
ENV			#构建的时候设置环境遍量
[root@root tomcat]# cat Dockerfile 
FROM centos
MAINTAINER root<1754808@qq.com>COPY readme.txt /usr/local/readme.txtADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/RUN yum -y install vim
RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/startup.sh
RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/catalina.shENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out

构建镜像

[root@root tomcat]# docker build -t lh_tomcat .
Sending build context to Docker daemon  169.9MB
Step 1/17 : FROM centos---> 300e315adb2f
Step 2/17 : MAINTAINER root<1754808103@qq.com>---> Using cache---> f23b466173fb
Step 3/17 : COPY readme.txt /usr/local/readme.txt---> Using cache---> 5dfad04cae31
Step 4/17 : ADD jdk-8u11-linux-x64.tar.gz /usr/local/---> Using cache---> e15afd0717d9
Step 5/17 : ADD apache-tomcat-9.0.22.tar.gz /usr/local/---> Using cache---> 8b3b0b260f0c
Step 6/17 : RUN yum -y install vim---> Using cache---> 731ad02de5b7
Step 7/17 : RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/startup.sh---> Using cache---> e60e5bb8d68d
Step 8/17 : RUN chmod 777 /usr/local/apache-tomcat-9.0.22/bin/catalina.sh---> Using cache---> 1bdadcf5f05c
Step 9/17 : ENV MYPATH /usr/local---> Running in dc5f851a95aa
Removing intermediate container dc5f851a95aa---> 567826b1db9b
Step 10/17 : WORKDIR $MYPATH---> Running in a1b9fa1f25c8
Removing intermediate container a1b9fa1f25c8---> f2da44f2566d
Step 11/17 : ENV JAVA_HOME /usr/local/jdk1.8.0_11---> Running in 1525576adae9
Removing intermediate container 1525576adae9---> 422a260a9854
Step 12/17 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar---> Running in ff3679d3d0d7
Removing intermediate container ff3679d3d0d7---> 1f2fb5b405ce
Step 13/17 : ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22---> Running in c627139c2a0e
Removing intermediate container c627139c2a0e---> 941804071257
Step 14/17 : ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22---> Running in 201a8d7d454b
Removing intermediate container 201a8d7d454b---> 6a3edac3ea02
Step 15/17 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin---> Running in 5403ebe0c029
Removing intermediate container 5403ebe0c029---> 3de5361ec881
Step 16/17 : EXPOSE 8080---> Running in a1e4f56c1cb5
Removing intermediate container a1e4f56c1cb5---> 98fd728337df
Step 17/17 : CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out---> Running in 3b183e06aecd
Removing intermediate container 3b183e06aecd---> 9fcc0d5c6a4e
Successfully built 9fcc0d5c6a4e
Successfully tagged lh_tomcat:latest

ADD

ADD指令具有以下三种功能:

1、将本地文件复制到容器映像中

举例来说,如果要将主机系统上的本地文件从Docker镜像复制/home/user/application/opt/app,则可以在Dockerfile中包含以下指令:

ADD /home/user/application /opt/app

在此,仅将目录的内容/home/user/application复制到/opt/app包括其元数据在内的目录中。它不会复制application目录本身

2、提取本地存储的tar文件

您还可以使用ADD指令提取格式为identity,gzip,bzip2或xz的压缩档案。这些内容在您所构建的Docker映像的目标位置中被解压缩为目录

ADD /home/user/test.tar.gz /opt

该行为类似于当您使用tar命令将tarball解压到主机系统上的特定目录时发生的情况

3、从URL下载文件

它类似于wget -PDockerfiles的工作方式。在构建Docker映像时,您可以按照以下说明下载文件并将其存储在容器映像上的所需位置

ADD https://filesamples.com/samples/document/pdf/sample2.pdf /home/user

生成图像后,可以在启动基于它的容器之前使用此PDF文档。这是许多独特的用例之一

COPY

COPY指令是ADD指令的改进,旨在减轻Docker用户之间的混淆。它的功能只是一个-将文件或目录从主机上的源位置复制到Docker映像上的目标位置

因此,基本上是上面讨论的ADD指令部分中的第一点。相应的指令为

COPY /home/user/application /opt/app

相关文章:

dockerfile 命令详解(三)

CMD 和 ENTRYPOINT 区别 CMD #指定这个容器启动的时候要运行的命令&#xff0c;只有最后一个会生效&#xff0c;可被替代 ENTRYPOINT #指定这个容器启动的时候要运行的命令&#xff0c;可以追加命令 FROM #基础镜像&#xff0c;一切从这里开始构建 MAINTAINER #…...

使用这个插件,fiddler抓包直接生成httprunner脚本

har2case可以将.har文件转化成yaml格式或者json格式的httprunner的脚本文件&#xff0c;生成.har格式文件可以借助 fiddler 或 Charles 抓包工具 友情提示&#xff1a; 录制脚本&#xff0c;只是一个过渡&#xff0c;从0到1的一个过渡&#xff0c;如果让你直接写脚本&#xf…...

干翻Dubbo系列第十五篇:Rest协议基于SpringBoot的规范化开发

文章目录 文章说明 一&#xff1a;Rest协议简介 二&#xff1a;搭建开发环境 1&#xff1a;父项目里边引入的新的版本内容 2&#xff1a;Api中的操作 3&#xff1a;Provider模块 三&#xff1a;编码 1&#xff1a;API模块 2&#xff1a;Provider模块 3&#xff1a;Co…...

文件上传后端处理页面

最近想搭建一个完整的网站&#xff0c;加深理解&#xff0c;困难重重啊&#xff0c;遇到很多问题 前端&#xff1a;非常原始的代码&#xff0c;没有用任何框架 <form method"post" enctype"multipart/form-data" action"upfile.php"><…...

小红书母婴类产品同质化严重,如何在市场中脱颖而出?

小红书是一个女性用户为主的平台&#xff0c;其美妆和母婴类产品是平台的主流类目。今天来分享下小红书母婴类产品同质化严重&#xff0c;如何在市场中脱颖而出&#xff1f; 一、小红书平台的母婴传播优势 尽管小红书的母婴品类&#xff0c;已经出现产品同质化严重的问题。但这…...

Typora上使用Mermaid语法展示流程图、时序图、甘特图

你已经安装Typora并打开了一个新文档后,可以按照以下详细步骤在Typora上使用Mermaid语法展示流程图、时序图、甘特图 流程图 使用graph LR声明开始,并使用箭头和连接符号定义节点之间的关系。例如,A --> B表示从节点A指向节点B的箭头连接。graph TB A[界面布局图] -->…...

css中文本阴影特效

文字颜色渐变 .text-clip{color:transparent;font-size: 40px;font-weight: bold;background: linear-gradient(45deg, rgba(0,173,181,1) 0%, rgba(0,173,181,.4) 100%);-webkit-background-clip: text; } 文字模糊 .text-blurry{text-align: center;color: transparent;text-…...

ITIL帮助台怎样帮助企业建设IT服务?

大多数企业都是从邮件开始IT支持建设的&#xff0c;随着企业的规模扩大、服务请求的增长&#xff0c;服务质量不可避免出现了急剧的下降。IT支持团队进入消防员模式&#xff0c;他们只能奔波于解决请求&#xff0c;避免服务失败。没有ITIL所定义的流程体系&#xff0c;IT团队失…...

解释区块链技术的应用场景和优势

区块链是一种去中心化的分布式数据库&#xff0c;在其中记录着多个节点之间的交易信息。它的应用场景非常广泛&#xff0c;以下是一些常见的应用场景和优势&#xff1a; 金融交易&#xff1a;区块链可以用来记录交易信息&#xff0c;从而实现去中心化的金融交易。比如比特币就是…...

从编程语言的角度来理解正则表达式

程序代码是对现实事物处理逻辑的抽象&#xff0c;而正则表达式&#xff0c;则是对复杂的字符匹配程序代码的进一步抽象&#xff1b;也就是说&#xff0c;高度简洁的正则表达式&#xff0c;可以认为其背后所对应的&#xff0c;是字符匹配程序代码&#xff0c;而字符匹配程序代码…...

DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件

一分钟速通ACPI和鲲鹏软件移植 操作系统内核鲲鹏软件移植鲲鹏软件移植流程 编译工具选择编译参数移植案例源码修改案例鲲鹏分析扫描工具 Dependency Advisor鲲鹏代码迁移工具 Porting Advisor 鲲鹏软件性能调优鲲鹏软件性能调优流程CPU与内存子系统性能调优网络子系统性能调优磁…...

C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》

医院里面常见的叫号系统怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第…...

mysql profiling profiles profile

要想优化一条 Query&#xff0c;我们就需要清楚的知道这条 Query 的性能瓶颈到底在哪里&#xff0c;是消耗的 CPU计算太多&#xff0c;还是需要的的 IO 操作太多&#xff1f;要想能够清楚的了解这些信息&#xff0c;在 MySQL 5.0 和 MySQL 5.1正式版中已经可以非常容易做到了&a…...

ChatGPT AIGC 一个指令总结Python所有知识点

在ChatGPT中,直接输入一个指令就可以生成Python的所有知识点大纲。 非常实用的ChatGPT功能。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.…...

【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB

OpenELB 官网 https://openelb.io 本文内容学习于马士兵云原生课程 概述 OpenELB is an open-source load balancer implementation designed for bare-metal Kubernetes clusters. OpenELB是一个为裸机Kubernetes集群设计的开源负载均衡器实现。 In cloud-based Kubernetes cl…...

Android Native Code开发学习(三)对java中的对象变量进行操作

Android Native Code开发学习&#xff08;三&#xff09; 本教程为native code学习笔记&#xff0c;希望能够帮到有需要的人 我的电脑系统为ubuntu 22.04&#xff0c;当然windows也是可以的&#xff0c;区别不大 对java中的对象变量进行操作 首先我们新建一个java的类 pub…...

如何用bat文件调用与它在同一文件夹下的某个exe程序

第一个方案&#xff1a; 如果bat文件与某个exe程序在同一文件夹下的。那直接写那个 程序文件名字就行了。 两种写法。比如是 test.exe程序 一种 test.exe 二种 start test.exe 第一种批处理会等待test.exe程序执行完后才会运行下面的语句 第二种不会等待 这个写绝对路径好用 另…...

设计模式--单例模式(Singleton Pattern)

一、什么是单例模式 单例模式是一种创建型设计模式&#xff0c;它旨在确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。换句话说&#xff0c;单例模式限制了类的实例化次数为一个&#xff0c;并提供一种在应用程序中共享一个实例的方式。这对于需要只有…...

postgis数据库从一张表中过滤出一部分数据到新表中

你可以使用以下步骤在PostGIS数据库中过滤objectid<100的数据&#xff0c;并将其创建为新表&#xff1a;打开PostGIS数据库的终端或客户端工具&#xff08;如Psql&#xff09;。 选择你要过滤数据的表。假设表名为"original_table"&#xff0c;该表包含一个名为&q…...

INDEMIND:“大+小”多机协同,实现机器人商用场景全覆盖

随着商用清洁机器人进入越来越多的场景中&#xff0c;单一的中型机器人并不能有效覆盖所有区域&#xff0c;更加细分化的产品组合正在成为新的趋势。 产品形态的“新趋势” 在商用场景中&#xff0c;目前的商用清洁机器人几乎均是中大型的产品形态&#xff0c;较大的体型意味…...

Zstats高级版教程(3):如何进行数据整理(下),分类变量如何设置对照组?设置值标签?

本篇是风暴统计平台教程系列的第三章&#xff0c;将详细说明如何使用数据整理模块&#xff0c;节省后续分析的时间。因为涉及内容比较多&#xff0c;分为上中下三篇&#xff0c;此为下篇。前两篇数据整理教程分别向大家详细介绍了数据整理模块的定量数据转分类、计算新变量、变…...

Phi-4-mini-reasoning开发者实操:tail日志定位推理超时问题全记录

Phi-4-mini-reasoning开发者实操&#xff1a;tail日志定位推理超时问题全记录 1. 问题背景与现象 最近在使用Phi-4-mini-reasoning模型进行数学题推理时&#xff0c;发现部分复杂题目会出现响应超时的情况。具体表现为&#xff1a; 提交题目后&#xff0c;页面长时间显示&qu…...

别再死记硬背了!用PyTorch代码逐行拆解Transformer中的QKV矩阵计算

用PyTorch代码逐行拆解Transformer中的QKV矩阵计算 在自然语言处理领域&#xff0c;Transformer架构已经成为事实上的标准。但很多开发者发现&#xff0c;仅通过理论图示理解其核心的注意力机制仍然存在困难。本文将带你用PyTorch代码从零开始实现QKV矩阵的计算过程&#xff0c…...

PowerPaint-V1 Gradio场景应用:从家庭照片修复到工作素材处理

PowerPaint-V1 Gradio场景应用&#xff1a;从家庭照片修复到工作素材处理 1. 引言&#xff1a;图像修复的日常革命 周末整理老照片时&#xff0c;发现珍贵的全家福上有几处划痕&#xff1b;准备工作报告时&#xff0c;急需一张专业配图却找不到合适素材&#xff1b;电商运营需…...

硬件工程师的福音:用Beyond Compare 4表格比对功能,5分钟搞定BOM清单版本差异检查

硬件工程师的效率革命&#xff1a;Beyond Compare 4表格比对功能深度解析 在硬件研发的日常工作中&#xff0c;BOM清单的版本管理往往是最令人头疼的环节之一。每次PCB设计的小版本迭代——无论是物料替换、数量调整还是参数优化——都需要工程师花费大量时间核对变更细节。传统…...

千问3.5-2B部署教程:GPU利用率监控脚本(nvidia-smi + prometheus exporter)

千问3.5-2B部署教程&#xff1a;GPU利用率监控脚本&#xff08;nvidia-smi prometheus exporter&#xff09; 1. 引言 在部署和使用千问3.5-2B这类视觉语言模型时&#xff0c;GPU资源的高效利用至关重要。本教程将手把手教你如何搭建一个轻量级的GPU监控系统&#xff0c;实时…...

别再傻等1000步了!用DDIM在Stable Diffusion里5分钟搞定高质量出图(附详细参数设置)

5分钟极速出图&#xff1a;DDIM采样器在Stable Diffusion中的实战指南 当你在深夜赶稿需要快速生成概念图时&#xff0c;当客户要求半小时内看到10个设计方案时&#xff0c;传统扩散模型缓慢的生成速度往往让人抓狂。别担心&#xff0c;DDIM采样器就是为这种紧急场景而生的利器…...

Go Routine 调度与系统线程绑定

Go语言凭借其轻量级并发模型Goroutine&#xff0c;成为高并发场景下的明星语言。Goroutine的魔力源于其高效的调度机制&#xff0c;而它与系统线程的绑定关系更是性能优化的关键。本文将揭开Goroutine调度与线程绑定的技术面纱&#xff0c;从运行时调度器、线程池管理、工作窃取…...

M24LR64E-R双接口NFC标签驱动与嵌入式集成指南

1. 项目概述NFC Tag M24LR6E 是一款面向嵌入式系统的 Arduino 兼容库&#xff0c;专为驱动 Seeed Studio 推出的 Grove - NFC Tag 模块而设计。该模块核心芯片为 STMicroelectronics 的 M24LR64E-R&#xff0c;是一款高度集成的双接口&#xff08;IC RF&#xff09;近场通信标…...

引爆企业降本增效的AI革命!生成式AI应用专家亲授,从字节跳动到华为的数字化转型实战秘籍!

本文介绍了资深AI专家Mr. Li在生成式AI应用与数字化转型领域的丰富经验&#xff0c;涵盖其在华为、字节跳动等企业的实践经历&#xff0c;以及在多个国家级标准制定和央企数字化转型项目中的参与。Mr. Li提供了一系列关于生成式AI和企业数字化转型的精品课程&#xff0c;旨在帮…...