学习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…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
