Docker Image(镜像)

“脚印会旧而梦还在走”
Docker 镜像介绍
(1) 如何理解镜像?
🎯 docker image本质就是一个 read-only(只读)文件,这个文件包含了文件系统、源码、库文件、依赖文件、工具等一些运行 application 所必须的文件。
🎯 我们也可以把docker image理解成一个模板,根据这个模板可以实例化出很多 “容器”。至于容器是什么?这里我们就简单理解成一个 "独立的操作系统+应用程序" 即可。
🎯 在image中是一层层文件系统 Union FS。联合文件系统,可以将几层目录挂载到一起,形成一个虚拟文件系统。每一层文件系统就叫做当前层的 “layer“。例如,我们可以在docker hub随意举例一个镜像文件:

注: 联合文件系统可以对每一层文件系统设置三 种权限,只读(readonly)、读写(readwrite)和写出(whiteout-able),但是 docker镜像中每一层文件系统都是只读的
镜像分层
在构建镜像的时候,都是从一个最基本的操作系统开始的。每个构建的操作都相当于做一层的修改,增加了一层文件系统。于是,一层层往上叠加,上层的修改会覆盖底层该位置的可见性。

这种构建的过程就类似于装地暖。我们人仅仅是能感受到表层木板,但不知道模板下还填了钢筋水泥层、加保温层,采暖管等。

为什么需要镜像?
Docker镜像本质就是一个”可读文件“,所以Docker镜像天然就具有 “打包”的功能。
往往我们的生产环境与研发环境是不一样的,为了正确地迁移、部署,我们需要做很多麻烦的工作。Docker镜像就像一个压缩包一样,它自身内部就具有一个完整的操作系统所有文件和对应的目录结构,与本地环境没有任何的关联性,从而屏蔽掉了环境的差异性。
docker 镜像提供了一种打包应用程序和预配置服务器环境的便捷方式可以很方便地将其用于个人用途或与其他 Docker 用户公开共享。
Docker 镜像命令
docker 镜像命令清单:
| 命令 | 别名 | 功能 |
| docker images | docker image ls/docker image list | 列出本地镜像 |
| docker tag | docker image tag | 给镜像打标签 可用于推送镜像仓库 |
| docker pull | docker image pull | 从镜像仓库拉取镜像 |
| docker push | docker image push | 推送镜像到仓库 |
| docker rmi | docker image rm/ docker image remove | 删除本地镜像 |
| docker build | docker image build | 通过 dockerfile 制作镜像 |
| docker save | docker image save | 将指定镜像保存 成 tar 归档文件 |
| docker load | docker image load | 导入使用docker save命令导出的镜像 |
| docker image inspect | 查看镜像详细信息 | |
| docker history | docker image history | 查看镜像历史 |
| docker import | docker image import | 从归档文件 docker export 中创建镜像 |
| docker image prune | 删除不使用的镜像 |
Docker 命令详解:
🧩 docker images
语法:
# 列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]OPTIONS:
-a :列出本地所有的镜像
--digests :显示镜像的摘要信息
-f :显示满足条件的镜像
--format :指定返回值的模板文件
--no-trunc :显示完整的镜像信息
-q :只显示镜像 ID

🧩 docker tag
语法:
# 标记本地镜像,将其归入某一仓库
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
🧩 docker rmi
语法:
# 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]OPTIONS:
○ -f :强制删除
○ --no-prune :不移除该镜像的过程镜像,默认移除

如果是删除标签,仅仅是将这个标签借关联。直到删除镜像,才会真正将这个镜像删除。
🧩 docker save
语法:
# 将指定镜像保存成 tar 归档文件
docker save [OPTIONS] IMAGE [IMAGE...]OPTIONS:
-o :输出到的文件
我们想要将这两个镜像打包归档:

通过命令生成.tar文件
🧩 docker load
语法:
# 导入使用 docker save 命令导出的镜像
docker load [OPTIONS]OPTIONS:
--input , -i : 指定导入的文件,代替STDIN
--quiet , -q : 精简输出信息
我们将之前的本地镜像删除。
我们再通过指定导入.tar包,加载镜像文件。

🧩 docker image inspect
# 查看镜像详细信息
docker image inspect [OPTIONS] IMAGE [IMAGE...]注:
docker inspect 会自动检查是镜像还是容器然后显示相信信息
🧩 docker history
语法:
# 显示镜像历史
docker history [OPTIONS] IMAGEOPTIONS:
-H , --human :大小和日期采用人容易读的格式展现
--no-trunc :显示全部信息,不要隔断
-q, --quiet: 只显示镜像 id 信息

这些镜像历史通常就是显示出这个镜像文件历史 layer层。
🧩 docker image prune
语法:
# 删除不使用的镜像
docker image prune [OPTIONS]OPTIONS:
-a , --all : 删除全部不使用的镜像
--filter filter:指定过滤条件
-f, --force :不提示是否删除

这些镜像没有被使用过,所以就会被删除。这个命令需小心谨慎地使用,以防误删。
至于docker build与镜像制作有关 、docker import本质就是生成当前容器的快照版本,则不是本篇要细说的。
镜像操作案例
我们已经习得docker镜像命令的使用。所以本小节就是以使用busybox镜像对这些命令操作进行使用、回顾。
什么是busybox?
BusyBox是一个集成了三百多个最常用Linux命令和工具的软件。
拉取镜像
docker pull busybox:1.36.0

成功拉取下来。
查看镜像详情
docker image inspect busybox:1.36.0

查看镜像分层
docker history busybox:1.36.0

打标签
docker tag busybox:1.36.0 registry.cn-chengdu.aliyuncs.com/wgzzs/test_registry:v1.0

推送镜像
docker login registry.cn-chengdu.aliyuncs.com
首先需要登录认证。
docker push registry.cn-chengdu.aliyuncs.com/wgzzs/test_registry:v1.1

完成推送
运行容器
docker run -it --rm busybox:1.36.0 
我们可以再容器中的命令行输入 busybox为我们打包的linux命令。
镜像删除
镜像的删除:可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像
docker rmi busybox:1.36.0

本篇到此结束,感谢你的阅读。
祝你好运,向阳而生~

相关文章:
Docker Image(镜像)
“脚印会旧而梦还在走” Docker 镜像介绍 (1) 如何理解镜像? 🎯 docker image本质就是一个 read-only(只读)文件,这个文件包含了文件系统、源码、库文件、依赖文件、工具等一些运行 application 所必须的文件。 🎯 我们也可以…...
qgis启动提示Could not load qgis_app.dll
qgis启动提示Could not load qgis_app.dll 报错信息 我安装了QGIS3.16和3.22和3.28,都无法运行,启动程序报错问题如下图所示 解决方法 在开始菜单运行OSGeo4W 然后进去看看已经下载的qgis有没有更新,如果有更新的话,就直接点…...
数据分析---Python与sql
目录 Python的pandas,如何实现SQL中的leftjoinPython的pandas,如何实现SQL中的unionPython的pandas,如何实现类似SQL中的where进行限制Python的pandas,如和实现SQL中的group byPython的pandas,如何删除某一列Python的pandas,如何实现SQL中的leftjoin 在Python的pandas库中…...
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
前言 嘿,数据库大冒险家们!准备好迎接数据库管理的新挑战了吗?今天我们要探索的是Oracle数据库中的模式对象管理与安全管理!🛡️💻 在这篇博文【Oracle】玩转Oracle数据库(六)&#…...
微服务篇之限流
一、为什么要限流 1. 并发的确大(突发流量)。 2. 防止用户恶意刷接口。 二、限流的实现方式 1. Tomcat限流 可以设置最大连接数,但是每一个微服务都有一个tomcat,实现起来非常麻烦。 2. Nginx限流 (1)控…...
react脚手架
1.react概述 1.1 什么是react React是一个用于构建用户界面的JS库。 用户界面:HTML页面(前端) React主要用来写HTML界面,或构建Web应用 如果从MVC的角度来看,React仅仅是视图层(V),也就是只负…...
【Vue3】插槽使用和animate使用
插槽使用 插槽slot匿名插槽具名插槽插槽作用域简写 动态插槽transition动画组件自定义过渡class类名如何使用animate动画库组件动画生命周期appear transition- group过渡列表 插槽slot 插槽就是子组件中提供给父组件使用的一个占位符父组件可以在这个占位符智能填充任何模板代…...
HarmonyOS—低代码开发Demo示例
接下来为大家展示一个低代码开发的JS工程的Demo示例,使用低代码开发如下华为手机介绍列表的HarmonyOS应用/服务示例。 1.删除模板页面中的控件后,选中组件栏中的List组件,将其拖至中央画布区域,松开鼠标,实现一个List组…...
Spring体系下解决请求统一加解密之ResponseBodyAdvice和RequestBodyAdvice
在日常写项目中经常一般正规的项目都需要将信息加密后返回前端,前端进行解密后再展示出来给用户,这样做的目的无一不是为了安全,在Java开发中,如何简单快速的完成这个功能呢,这里就需要用到这两个接口ResponseBodyAdvi…...
C# 经典:ref 和 out 的区别详解
在C#中,ref和out关键字用于按引用传递变量,它们在变量传递、输出参数、返回值以及异常处理等方面有一些重要区别。本文将详细阐述这些差异。 1. 变量传递 ref和out关键字都可以用于方法的参数传递。它们的主要区别在于如何处理变量的引用。 ref关键字…...
Linux 系统添加虚拟内存的方法
https://cloud.189.cn/t/6nqy2m3YnUN3 (访问码:ic3i) 云服务器 群晖NAS 切换到 root 模式 sudo su 或者 sudo -i #群晖/volume2 是你添加的硬盘挂载路径 不一定是 volume2 有可能是 volume1 #如果你只有1快硬盘 volume2 改成 volume1 …...
PHP 函数四
一 fgets(resource $stream, ?int $length null) 从文件指针中读取一行。 返回字符串,如果文件指针中没有更多的数据了则返回 false。错误发生时返回 false。 $stream 为文件资源,必须指向fopen()或fscokopen()成功打开的文件。文件打开之后&#x…...
【Android】反编译APK及重新打包
1.下载 APK 反编译工具 首先,需要下载一个 APK 反编译工具,例如 Apktool。可以在官网(https://apktool.org/docs/install)上下载最新版本的 Apktool,也可以使用包管理器来安装。 2.反编译 APK 文件 将要修改包名的 …...
下载huggingface数据集到本地并读取.arrow文件遇到的问题
文章目录 1. 524MB中文维基百科语料(需要下载的数据集)2. 下载 hugging face 网站上的数据集3. 读取 .arrow 文件报错代码4. 纠正后代码 1. 524MB中文维基百科语料(需要下载的数据集) 2. 下载 hugging face 网站上的数据集 要将H…...
.NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
设计模式是软件工程中常用的解决特定问题的通用设计方法。它们提供了经过验证的解决方案,可用于解决在软件开发过程中经常遇到的一些常见问题。设计模式不是一种具体的编程语言特性或语法,而是一种通用的设计思想或模板,可以帮助开发人员设计…...
【Web】关于jQuery萌新必须要知道的那些基础知识
目录 DOM对象和jQuery包装集对象 jQuery选择器 jQuery操作元素的属性,样式,内容 jQuery创建元素和添加元素,删除元素和遍历元素 jQuery-ready加载事件 jQuery绑定事件 jQuery中ajax的使用 DOM对象和jQuery包装集对象 DOM对象…...
第 1 章 微信小程序与云开发从入门到实践从零开始做小程序——开发认识微信小程序
小北的参考工具书 小程序开发的图书并不少,这本书仍然值得你拥有! 首先,这是一本全栈小程序开发教程,循序渐进,由浅入深,介绍了小程序开发你想了解的方方面面,包括近其小程序开发的各种新技术应…...
数据隐私安全趋势
在当今社交媒体和开源开发的世界中,共享似乎已成为社会常态。毕竟,我们都被教导分享就是关怀。这不仅适用于个人,也适用于公司:无论是有意在社交媒体帐户和公司网站上,还是无意中通过员工的行为,公司可能会…...
学习磁盘管理
文章目录 一、磁盘接口类型二、磁盘设备的命名三、fdisk分区四、自动挂载五、扩容swap六、GPT分区七、逻辑卷管理八、磁盘配额九、RAID十、软硬链接 一、磁盘接口类型 IDE、SATA、SCSI、SAS、FC(光纤通道) IDE, 该接口是并口。SATA, 该接口是串口。SCS…...
C语言从入门到精通(一) - C语言开发神器CLion
clion安装配置 下载安装 下载 安装 运行clion clion设置 配置快捷键 配置快捷键为eclipse模式 [可以选择自己喜欢的快捷键模式] 添加cygwin编译器 下载cygwin Cygwin Installation Cygwin是一个在windows平台上运行的类UNIX模拟环境,是Cygnus Solutions公司开发的…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
背包问题双雄:01 背包与完全背包详解(Java 实现)
一、背包问题概述 背包问题是动态规划领域的经典问题,其核心在于如何在有限容量的背包中选择物品,使得总价值最大化。根据物品选择规则的不同,主要分为两类: 01 背包:每件物品最多选 1 次(选或不选&#…...

