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公司开发的…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...

