【docker】9. 镜像操作与实战
镜像操作案例
查找镜像
docker search busybox
下载镜像
docker pull busybox:1.36.0
查看镜像及列表存储位置
root@LAPTOP-H2EI4I6A:~# docker images busybox
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 517b897a6a83 2 months ago 4.27MB
查看 overlay2/repositories.json 文件,该文件记录已拉取镜像文件的信息
查看本地镜像, 发现和 repositories.json 文件记录的信息相同
镜像过滤
○ 根据仓库名列出镜像
列出特定的某个镜像,也就是说指定仓库名和标签
root@LAPTOP-H2EI4I6A:~# docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx <none> 0f8498f13f3a 20 months ago 142MB
nginx 1.23.3 ac232364af84 20 months ago 142MB
root@LAPTOP-H2EI4I6A:~# docker images nginx:1.23.3
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.23.3 ac232364af84 20 months ago 142MB
docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。
之前我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。
查看某个位置之前的镜像 before,查看某个位置之后的镜像 since
root@LAPTOP-H2EI4I6A:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
crpi-xp37q81m2et6ppvz.cn-hangzhou.personal.cr.aliyuncs.com/hacha/hacha v0.1 517b897a6a83 2 months ago 4.27MB
busybox latest 517b897a6a83 2 months ago 4.27MB
crpi-xp37q81m2et6ppvz.cn-hangzhou.personal.cr.aliyuncs.com/hacha/hacha latest d2c94e258dcb 19 months ago 13.3kB
nginx <none> 0f8498f13f3a 20 months ago 142MB
nginx 1.23.3 ac232364af84 20 months ago 142MB
root@LAPTOP-H2EI4I6A:~# docker image ls -f since=crpi-xp37q81m2et6ppvz.cn-hangzhou.personal.cr.aliyuncs.com/hacha/hacha
REPOSITORY TAG IMAGE ID CREATED SIZE
crpi-xp37q81m2et6ppvz.cn-hangzhou.personal.cr.aliyuncs.com/hacha/hacha v0.1 517b897a6a83 2 months ago 4.27MB
busybox latest 517b897a6a83 2 months ago 4.27MB
root@LAPTOP-H2EI4I6A:~# docker image ls -f before=crpi-xp37q81m2et6ppvz.cn-hangzhou.personal.cr.aliyuncs.com/hacha/hacha
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx <none> 0f8498f13f3a 20 months ago 142MB
nginx 1.23.3 ac232364af84 20 months ago 142MB
查看镜像详情
root@LAPTOP-H2EI4I6A:~# docker inspect busybox:latest
查看镜像分层
Docker history 可以查看分层
root@LAPTOP-H2EI4I6A:~# docker history nginx:1.23.3
IMAGE CREATED CREATED BY SIZE COMMENT
ac232364af84 20 months ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 20 months ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B
<missing> 20 months ago /bin/sh -c #(nop) EXPOSE 80 0B
<missing> 20 months ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
<missing> 20 months ago /bin/sh -c #(nop) COPY file:e57eef017a414ca7… 4.62kB
<missing> 20 months ago /bin/sh -c #(nop) COPY file:abbcbf84dc17ee44… 1.27kB
<missing> 20 months ago /bin/sh -c #(nop) COPY file:5c18272734349488… 2.12kB
<missing> 20 months ago /bin/sh -c #(nop) COPY file:7b307b62e82255f0… 1.62kB
<missing> 20 months ago /bin/sh -c set -x && addgroup --system -… 61.3MB
<missing> 20 months ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~bullseye 0B
<missing> 20 months ago /bin/sh -c #(nop) ENV NJS_VERSION=0.7.9 0B
<missing> 20 months ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.23.3 0B
<missing> 20 months ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> 20 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 20 months ago /bin/sh -c #(nop) ADD file:60911afdacfdc216e… 80.5MB
docker image inspect 可以查看详细的分层
一些镜像下载的时候也可以看到是一层一层下载的
打标签
docker tag busybox:1.36.0 ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0
推送镜像
docker pull ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0
运行容器
root@139-159-150-152:~# docker run -it --rm ccr.ccs.tencentyun.com/maxhou6/busyboxbymaxhou:v3.0 sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:08 inet addr:172.17.0.8 Bcast:172.17.255.255
Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:7 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0 RX bytes:737 (737.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # hostname
619291da55ec
/ # exit
镜像删除
镜像的删除:可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像
root@139-159-150-152:~# docker rmi busybox:1.36.0
Untagged: busybox:1.36.0
镜像综合实战
实战一、离线迁移镜像
- 服务器 1 上镜像保存为 tar 文件,如操作系统为 ubuntu
root@139-159-150-152:/data/myworkdir# docker save -o busybox.tar busybox
root@139-159-150-152:/data/myworkdir# ll
total 147740
drwxr-xr-x 2 root root 4096 Mar 13 16:28 ./
drwx--x--x 5 root root 4096 Mar 13 15:03 ../
-rw------- 1 root root 5101568 Mar 13 16:28 busybox.tar
-rw------- 1 root root 146172416 Mar 13 15:05 mynginx_1.22.1.tar
- scp 或者只用使用可视化工具拷贝镜像到第二台服务器上
root@139-159-150-152:/data/maxhou# scp busybox.tar root@43.138.218.166:/data/maxhou
The authenticity of host '43.138.218.166 (43.138.218.166)' can't
be established.
ECDSA key fingerprint is
SHA256:ai8KwGyM5W/iocUP8O00OMX7hriCD3ajd3wHVvdazTs.
Are you sure you want to continue connecting
(yes/no/[fingerprint])? yes
Warning: Permanently added '43.138.218.166' (ECDSA) to the list of
known hosts.
root@43.138.218.166's password:
busybox.tar
- 第二台机器从 tar 中恢复镜像
[root@VM-8-12-centos maxhou]# docker load -i busybox.tar baacf561cfff: Loading layer
[==================================================>]
5.092MB/5.092MB
Loaded image: busybox:1.36.0
可以看到busybox镜像恢复出来了
[root@VM-8-12-centos maxhou]# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
busybox 1.36.0 7cfbbec8963d 3 weeks ago
4.86MB
rabbitmq 3.9-management ef80153df89f 2 months ago
269MB
ubuntu 1.0 955bd67a1123 3 months ago
344MB
myubuntu 1.0 1de21ccbd1a1 3 months ago
344MB
busybox latest 827365c7baf1 3 months ago
4.86MB
redis 7.0 0256c63af7db 3 months ago
- 执行 docker run 检查镜像是否可以正常运行
[root@VM-8-12-centos maxhou]# docker run -it --rm busybox:1.36.0 sh
/ # ls /
bin dev etc home lib lib64 proc root sys tmp
usr var
/ # exit
实战二、镜像存储的压缩与共享
- 拉取 nginx 镜像,如果本地没有,镜像是从仓库拉取,如果有会提示镜像已经存在,并且是最新的。
root@139-159-150-152:~# docker pull nginx:1.21.1
1.21.1: Pulling from library/nginx
Digest:
sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c1286
7002e
Status: Image is up to date for nginx:1.21.1
docker.io/library/nginx:1.21.1
- Docker images 查看本地镜像,可以看到该镜像为 142Mb
- 从上面看到 nginx 为 1.21.1 的大小是 140 多 MB,但是我们从 docker hub 上查看可
以看到镜像是 50 多 MB,说明发生了压缩,因为仓库到本地需要走网络,所以文件越
小越好
- 把一个镜像打多个 tag,然后同时推送仓库,可以看到是说层已经存在,不会重复存储
root@139-159-150-152:/data/maxhou# docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.1
root@139-159-150-152:/data/maxhou# docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.2
root@139-159-150-152:/data/maxhou# docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.3
root@139-159-150-152:/data/maxhou# docker tag nginx:1.22.1
maxhou/mybitnginx:1.22.4
root@139-159-150-152:/data/maxhou# docker push maxhou/mybitnginx -a
The push refers to repository [docker.io/maxhou/mybitnginx]
9543dec06aa8: Layer already exists
ccf4f419ba49: Layer already exists
21f8452ebfb1: Layer already exists
25bbf4633bb3: Layer already exists
a4f34e6fb432: Layer already exists
3af14c9a24c9: Layer already exists
1.22.1: digest:
sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda3
6ea8b size: 1570
9543dec06aa8: Layer already exists
ccf4f419ba49: Layer already exists
21f8452ebfb1: Layer already exists
25bbf4633bb3: Layer already exists
a4f34e6fb432: Layer already exists
3af14c9a24c9: Layer already exists
1.22.2: digest:
sha256:9081064712674ffcff7b7bdf874c75bcb8e5fb933b65527026090dacda3
6ea8b size: 1570
9543dec06aa8: Layer already exists
ccf4f419ba49: Layer already exists
21f8452ebfb1: Layer already exists
25bbf4633bb3: Layer already exists
a4f34e6fb432: Layer already exists
3af14c9a24c9: Layer already exists
- 添加一个新的镜像到我们的仓库的时候,如果 docker hub 发现已经有了是 mount的,不是从本地推上去的就会直接挂载
root@139-159-150-152:/data/maxhou# docker tag nginx:1.16.1
maxhou/mybitnginx:1.16.1
root@139-159-150-152:/data/maxhou# docker push
maxhou/mybitnginx:1.16.1
The push refers to repository [docker.io/maxhou/mybitnginx]
c23548ea0b99: Mounted from library/nginx
82068c842707: Mounted from library/nginx
c2adabaecedb: Mounted from library/nginx
1.16.1: digest:
sha256:2963fc49cc50883ba9af25f977a9997ff9af06b45c12d968b7985dc1e92
54e4b size: 948
你尝试将标记后的镜像推送到私有仓库(在这个例子中是docker.io/maxhou/mybitnginx)时,Docker Hub 会检查这个镜像的各个层。
如果发现这些层和公共仓库(library/nginx)中的镜像层是相同的,就会直接挂载(引用)这些已经存在于公共仓库的层,而不是再次传输相同的数据来重新构建这些层。这样可以显著提高效率,避免重复的网络传输和存储开销。
相关文章:

【docker】9. 镜像操作与实战
镜像操作案例 查找镜像 docker search busybox下载镜像 docker pull busybox:1.36.0查看镜像及列表存储位置 rootLAPTOP-H2EI4I6A:~# docker images busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 517b897a6a83 2 months a…...
js-显示转换(强制转换)与隐式转换,==与===区别
1.显示转换(强制转换)与隐式转换 1.1显示转换 常见的JavaScript强制转换示例。 (1) 一元加号、一元减号- 值是布尔值,true将被转换为1,false将被转换为0。 let a "123"; let b a; // b的值为123,类型为Nu…...

【通俗理解】步长和学习率在神经网络中是一回事吗?
【通俗理解】步长和学习率在神经网络中是一回事吗? 【核心结论】 步长(Step Size)和学习率(Learning Rate, LR)在神经网络中并不是同一个概念,但它们都关乎模型训练过程中的参数更新。 【通俗解释&#x…...

【PTA】【数据库】【SQL命令】编程题2
数据库SQL命令测试题2 测试题目录 10-1 查询“李琳”老师所授课程的课程名称10-2 查询成绩比所有课程的平均成绩高的学生的学号及成绩10-3 创建带表达式的视图StuView10-4 从视图PerView中查询数据10-5 查询工资高于在“HR”部门工作的所有员工的工资的员工信息10-6 查询选修的…...
Spring Boot林业产品推荐系统:用户指南
摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此林业产品销售信…...
【Conda 】Conda 配置文件详解:优化你的包管理与环境设置
目录 引言一、什么是 .condarc 文件?二、.condarc 文件的详细解析与优化2.1 SSL 验证2.2 设置 Conda 下载源2.3 设置环境和包存储路径2.4 代理服务器设置2.5 连接超时设置2.6 显示频道 URL2.7 包版本与构建选择2.8 环境依赖性管理2.9 禁用默认包版本2.10 Conda 配置…...

win10中使用ffmpeg的filter滤镜
1 给视频加文字水印 1.1 添加播放时间 ffmpeg -i input.mp4 -vf "drawtextfontfileC\\:/Windows/fonts/consola.ttf:fontsize30:fontcolorwhite:timecode00\:00\:00\:00:rate25:textTCR\::boxcolor0x000000AA:box1:x20:y20" -y output.mp4 在视频的x20:y20位置添加t…...

设计模式 外观模式 门面模式
结构性模式-外观模式 门面模式 适用场景:如果你需要一个指向复杂子系统的直接接口, 且该接口的功能有限, 则可以使用外观模式。 不用关心后面的查询具体操作 /*** 聚合查询接口*/ RestController RequestMapping("/search") Slf…...

Prophet时间序列算法总结及python实现案例
目录 一、prophet理论总结二、python导入模块方式三、python实现案例3.1帮助信息3.2 案例 四、参考学习 一、prophet理论总结 prophet模型是facebook开源的一个时间序列预测算法。[1][2],该算法主要为处理具有周期性、趋势变化以及缺失值和异常值的时间序列数据而设…...

远程调用 rpc 、 open feign
在学习黑马 springcloud 视频的时候,看到 open feign 使用, 就是 http 封装。 spring框架三部曲,导入依赖,加配置,使用api。...
Redis的几种持久化方式
Redis 提供了两种主要的持久化方式,它们分别是: 1. RDB(Redis Database Snapshotting) RDB 是 Redis 的一种数据持久化方式,它会在指定的时间间隔内对 Redis 中的数据进行快照并保存到硬盘上。 特点: 触…...

论文笔记(五十九)A survey of robot manipulation in contact
A survey of robot manipulation in contact 文章概括摘要1. 引言解释柔顺性控制的概念:应用实例: 2. 需要接触操控的任务2.1 环境塑造2.2 工件对齐2.3 关节运动2.4 双臂接触操控 3. 接触操控中的控制3.1 力控制3.2 阻抗控制3.3 顺应控制 4. 接触操控中的…...

c#控制台程序26-30
26.寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m11,m2121,m31331皆为回文数。请编制函数实现此功能,如果是回文数&#…...
环形链表系列导学
问题描述 给定一个单链表,可能存在一个环。我们的目标是找到环的入口节点,即从这个节点开始,链表进入循环。如果没有环,则返回 null。 将链表问题转化为数学问题 状态序列与循环 我们可以将链表节点视为状态,每个节点的 next 指针代表状态转移函数 f f f。从头节点开始,我…...

IDEA2024创建一个spingboot项目
以下是创建一个基本的 Spring Boot 项目的步骤和示例: 初始化一个springboot工程其实有许多方法,笔者这里挑了一个最快捷的方式搭建一个项目。我们直接通过官方平台(start.spring.io)进行配置,然后下载压缩包就可以获取…...

Nginx:ssl
目录 部署ssl前提 nginx部署ssl证书 部署ssl部署建议 部署ssl前提 网站有域名根据域名申请到ssl证书,并下载证书部署到nginx中 部署了ssl证书后,访问的流量是加密的。 nginx部署ssl证书 #80端口跳转到443 server {listen 80;return 302 https://1…...
QT配置文件详解
TEMPLATElib TEMPLATE变量用于指定项目模板类型,其值可以是以下几种: app:建立一个应用程序的makefile,这是默认值。lib:建立一个库的makefile。vcapp:建立一个应用程序的Visual Studio项目文件。vclib&a…...

根据合约地址判断合约协议的方法
判断合约协议之前,需要了解一下什么是ERC165协议: ERC165 是以太坊中用于标准化接口检测的协议,由 Fabian Vogelsteller 在 2018 年创建 ,其核心内容主要包括以下方面: 接口定义 单一函数接口:ERC165 协议…...

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题
问题描述 电脑是联想YOGA Pro 14s至尊版,电脑上装的独立显卡是4060,一直是能够使用独立显卡的。然而有两次突然就找不到显卡了,NVIDIA CONTROL PANEL也消失了,而且也无法安装驱动。具体表现如下: 无法连接外接显示器…...

Spring Web开发注解和请求(1)
大家好我是小帅,今天我们来学习Spring Web MVC框架(入门级) 文章目录 1. 什么是 Spring Web MVC?1.1 MVC 定义1.2 什么是Spring MVC ? 2. 学习Spring MVC2.1 建⽴连接第一个spring MVC程序 3. web开发注解的解释3.1RestControlle…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...