学习docker第五弹-----高级篇start-Dockerfile
docker目录
- 1 Dockerfile是什么
- 2 Dockerfile能干嘛
- 3 如何书写Dockerfile
- 3.1 Dockerfile构建过程解析
- 3.2 小总结
- 3.3 Dockerfile的基本知识
- 3.5 保留字
- FROM
- MAINTAINER
- RUN 有两种方式
- EXPOSE
- WORKDIR
- ENV
- USER
- VOLUME
- ADD
- CMD
- ENTRYPOINT
- 4 后记
1 Dockerfile是什么
Dockerfile顾名思义就是跟docker有关的文件,官方一点就是用于构建docker镜像的文本文件,是由指令和参数组成的脚本。
tips:Dockerfile的第一个字母要大写,不要问我为什么?比如张三就是叫张三。
Dockerfile官网链接给到大家啦,自行按需查看捏~
https://docs.docker.com/reference/dockerfile/
2 Dockerfile能干嘛
我们之前了解过,相对于传统的虚拟机来说,docker的速度能够达到秒级,是因为docker的镜像都是十分基础的,里面的内核都是必须的,不必要的东西都需要后天的去增加功能。比如基础的ubuntu是没有vim、ifconfig的,这就需要我们手动操作,那不难理解,随着我们需求的增加,可能不断需要新的增加内容,因为我们需求的不断变化,使得我们重复安装内容的操作逐渐麻烦,所以Dockerfile应运而生。
我的理解是Dockerfile能够批量进行操作,运行命令和参数,便于我们创建所需的镜像。
3 如何书写Dockerfile
构建三部曲:编写Dockerfile------> docker build构建镜像--------> docker run
3.1 Dockerfile构建过程解析
Docker执行Dockerfile的大致流程
1 docker从基础镜像运行一个容器
2 执行一条指令并对容器作出修改
3 执行类似docker commit的操作提交一个新的镜像层
4 docker再基于刚提交的镜像运行一个新容器
5 执行Dockerfile中的下一条指令直到所有指令都执行完成
3.2 小总结
从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,Dockerfile是软件的原材料,Docker镜像是软件的交付产品,Docker容器则可以认为是软件镜像的运行态,也即依照镜像运行的容器实例。
3.3 Dockerfile的基本知识
1 每条保留字指令都必须为大写字母,且后面要跟随至少一个参数;
2 指令按照从上到下,顺序执行;
3 #表示注释;
4 每条指令都会创建一个新的镜像层并对镜像进行提交。
是不是看到这里就想,啥是保留字啊,我刚学的时候也一头雾水了。
3.5 保留字
注意,上文提到过,保留字都是大写字母且至少跟随一个参数
FROM
基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是FROM,类似与基类或者说父类
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN 有两种方式
RUN yum -y install vim --------相当于shell命令
RUN [“可执行文件”, “参数1”, …] -------------exec格式
我们用shell命令多一点,可以发现它就是RUN
加上我们的Linux命令,更加适合中国宝宝的学习方式,更好地迁移学习。
RUN
是在 docker build
时运行的
EXPOSE
当前容器对外暴露出的端口
#暴露80端口
EXPOSE 80
WORKDIR
指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV
用来在构建镜像过程中设置环境变量
USER
指定该镜像以什么样的用户去执行,如果都不指定,默认是root
VOLUME
容器数据卷,用于数据保存和持久化工作
ADD
将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
CMD
指定容器启动后要干的事情
CMD指令的格式和 RUN 类似,也是两种格式:
1 shell 格式: CMD <命令>
2 exec格式: CMD[“可执行文件”,“参数1”,“参数2”…]
3 参数列表格式:CMD[“参数1”,“参数2”…],在指定了 ENTRYPOINT 指令后,用 CMD 指定具体的参数
注意:
1 Dockerfile中可以有多个
CMD
指令,但只有最后一个生效,CMD
会被docker run
之后的参数替换
2CMD
和RUN
的区别:CMD
是在docker run
时运行;RUN
是在docker build
时运行
ENTRYPOINT
类似于CMD
,用来指定一个容器启动时要运行的命令,但不会被docker run
后面的命令覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT
指令指定的程序。
ENTRYPOINT
可以和CMD
一起使用,一般是变参才会使用CMD
,这里的CMD
等于是在给ENTRYPOINT
传参。
就是说,当指定了
ENTRYPOINT
后,CMD
的含义就发生了变化,不再是直接运行其命令,而是将CMD
的内容作为参数传递给ENTRYPOINT
指令,他们的组合会变成<ENTRYPOINT> "<CMD>"
优点:
在执行docker run
的时候可以指定ENTRYPOINT
运行所需的参数。
注意:
如果Dockerfile中存在多个ENTRYPOINT
指令,仅最后一个生效
4 后记
下一篇讲一下Dockerfile的案例,记得来看啊~
BB啊,如果本文档对您有一点点用的话,记得给美丽好学的我点个大大的赞,谢谢BB~
今天带了大圈的耳环尊嘟很好看,很开心,素颜也好看,嘻嘻!愿我们都有一个好心情!
相关文章:
学习docker第五弹-----高级篇start-Dockerfile
docker目录 1 Dockerfile是什么2 Dockerfile能干嘛3 如何书写Dockerfile3.1 Dockerfile构建过程解析3.2 小总结3.3 Dockerfile的基本知识3.5 保留字FROMMAINTAINERRUN 有两种方式EXPOSEWORKDIRENVUSERVOLUMEADDCMDENTRYPOINT 4 后记 1 Dockerfile是什么 Dockerfile顾名思义就是…...
【Elasticsearch】Elasticsearch集成Spring Boot
Elasticsearch集成Spring Boot 概述 Spring Data Elasticsearch 介绍一、环境初始化二、实战入门1、定义数据实体类2、定义Dao层3、框架集成-SpringData-集成测试-索引操作4、框架集成-SpringData-集成测试-文档操作5、框架集成-SpringData-集成测试-文档搜索 概述 Spring Data…...
HarmonyOS 移
什么是HarmonyOS HarmonyOS 中文名字是 鸿蒙操作系统 中国神话传说盘古在昆仑山开天辟地之前,世界是一团混沌状的元气,这种自然的元气叫做鸿蒙,那个时代成为鸿蒙时代华为公司的操作系统以鸿蒙取名,是不是有开天辟地之寓意&#x…...

跨子网的WinCC客户机/服务器如何实现通讯?
为了更有效地利用有限的IP地址,为了减少广播对网络带宽的占用从而提高带宽,为了实现在不同子网中应用不同的安全策略从而提高网络安全性,现场通常要求划分子网,将安全等级要求不同的计算机安置在不同的子网中,分开管理…...

java 面向对象高级
1.final关键字 class Demo{public static void main(String[] args) {final int[] anew int[]{1,2,3};// anew int[]{4,5,6}; 报错a[0]5;//可以,解释了final修饰引用性变量,变量存储的地址不能被改变,但地址所指向的对象的内容可以改变} }什…...
递推经典例题 - 爬楼梯
一、题目阅读 题目描述 一段楼梯有n级台阶。你每次可以跨一个、两个或者三个台阶。 请问走上n级台阶有几种方案?答案对998244353取模。 输入格式 一行一个数n。 输出格式 一行一个数,表示方案数。 样例 Input 1 3 Output 1 4 样例解释 1 1 1 3 1 2 …...

OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在反向投影图像上找到一个对象。 meanShift 是一种用于图像处理和计算机视觉领域的算法,特别适用于目标跟踪、图像分割等任务。该算…...

《数据治理精选案例集2.0(2024版)》592页PDF(已授权分享)
《亿信华辰数据治理精选案例集2.0》是北京亿信华辰软件有限责任公司倾力打造的专业数据治理案例集,汇集了100个一线政企数据治理实践案例,覆盖13大行业和500业务场景,通过深入剖析数据治理难题,提供了新思路和实战经验,…...

【51单片机】LED点阵屏 原理 + 使用
学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 LED点阵屏显示原理74HC595 编码LED点阵屏显示笑脸LED点阵屏显示动画 LED点阵屏 点阵屏在开发板的右上角,注意使用前需要…...

Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

【案例】Excel使用宏来批量插入图片
一、场景介绍 我有一个excel文件,需要通过一列的文件名称,按照规则给批量上传图片附件。 原始文件: 成功后文件: 二、实现方法 1. 使用【wps】工具打开Excel文件,将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…...
报名开启|开放原子大赛“Rust数据结构与算法学习赛”
开放原子大赛“Rust数据结构与算法学习赛”报名进行中,报名截止时间为11月17日。 为了进一步促进开源技术的发展,提升国内开源社区的创新能力和国际影响力,开放原子开源基金会与清华大学开源操作系统训练营等单位,共同举办本次Rus…...

[翻译] 创始人模式(Founder Mode)
Founder Mode 上周在一次YC活动中,Brian Chesky发表了一场在场的每个人都难以忘怀的演讲。会后,我与大多数创始人交流时,他们都表示这是他们听过的最好的演讲。连Ron Conway也第一次忘记了记笔记。我不会试图在这里复述演讲内容,…...
拓扑排序(C++类封装+数组模拟队列和邻接表)
拓扑序列 对于任何无回路的AOV网,其顶点均可排成拓扑序列,并且其拓扑序列未必唯一。步骤如下: 1.从网中选择一个入度为0的顶点且输出。 2.从网中删除该顶点及其所有出边。 3.执行1,2,直至所有顶点已输出࿰…...
FP独立站引流革命:GG斗篷技术解锁流量新策略
在跨境电商领域,FP独立站的运营者们面临着一个共同的挑战:如何在遵守平台规则的同时,有效地吸引和保持流量。传统的引流方法如SEM、SEO、邮件推广和社交媒体营销,对于FP独立站来说,往往效果有限。但现在,一…...

管道(Pipes)、过滤器(Filters)和拦截器(Interceptors)
在Java中,管道(Pipes)、过滤器(Filters)和拦截器(Interceptors)是三种不同的概念,它们在应用中的作用和实现方式有所不同。以下是它们之间的主要区别: 一、管道…...

uniapp组件样式运行至小程序失效
文章目录 一、uniapp样式穿透打包运行至微信小程序失效 一、uniapp样式穿透打包运行至微信小程序失效 组件样式隔离文章参考 解决方案 options: {styleIsolation: "shared",},这个配置项改变了小程序组件的样式隔离模式,使得组件的样式能够共享和继承。…...
认识鸿蒙系统
鸿蒙系统作为华为推出的操作系统,近年来在智能手机、智能穿戴、车载和家居等多个领域取得了显著的发展。其独特的分布式技术、高性能和安全性等特点,使其在与安卓和iOS的竞争中逐渐崭露头角,有望形成三足鼎立之势。 从开发者角度来看&#x…...
Docker Compose部署Rabbitmq(Dockerfile安装延迟队列)
整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...

硬件基础06 滤波器——无源、有源(含Filter Solutions、Filter Pro、MATLAB Fdatool)
目录 一、Filter Solutions 1、软件资源及安装教程如下 2、使用相关内容 二、Filter Pro使用 1、软件资源及安装教程如下 2、使用相关内容 三、MATLAB Fdatool 1、在matlab命令中输入fdatool 2、输入相关参数,例如低通、FIR、20阶、hamming窗 3、调用 &am…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...

Heygem50系显卡合成的视频声音杂音模糊解决方案
如果你在使用50系显卡有杂音的情况,可能还是官方适配问题,可以使用以下方案进行解决: 方案一:剪映替换音色(简单适合普通玩家) 使用剪映换音色即可,口型还是对上的,没有剪映vip的&…...

Vue.js教学第二十一章:vue实战项目二,个人博客搭建
基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…...

LangChain + LangSmith + DeepSeek 入门实战:构建代码生成助手
本文基于 Jupyter Notebook 实践代码,结合 LangChain、LangSmith 和 DeepSeek 大模型,手把手演示如何构建一个代码生成助手,并实现全流程追踪与优化。 一、环境准备与配置 1. 安装依赖 pip install langchain langchain_openai2. 设置环境变…...
大模型的LoRa通讯详解与实现教程
一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...
RK3568项目(七)--uboot系统之外设与PMIC详解
目录 一、引言 二、按键 ------>2.1、按键种类 ------------>2.1.1、RESET ------------>2.1.2、UPDATE ------------>2.1.3、PWRON 部分 ------------>2.1.4、RK809 PMIC ------------>2.1.5、ADC按键 ------------>2.1.6、ADC按键驱动 ------…...