【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…...
Supervisor使用教程
文章目录 [toc] Supervisor使用教程平台要求 安装supervisor本文测试的时候是使用Linux的yum安装的(其它方式未做测试)加入系统守护进行 Supervisor使用教程 在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式…...
Spark基本命令详解
文章目录 Spark基本命令详解一、引言二、Spark Core 基本命令1、Transformations(转换操作)1.1、groupBy(func)1.2、filter(func) 2、Actions(动作操作)2.1、distinct([numTasks])2.2、sortBy(func, [ascending], [numTasks]) 三、…...
Three.js 相机视角的平滑过渡与点击模型切换视角
在 Three.js 中,实现相机视角的平滑过渡和点击模型切换到查看模型视角是一个常见且有用的功能。这种效果不仅能提升用户体验,还能为场景互动添加更多的动态元素。 1. 基本设置 首先,我们需要创建一个基本的 Three.js 场景,包括相…...
jenken 打包linux包遇到的问题(环境变量)
环境变量问题 我们jenkens 打包的时候 远程打包 通过ssh 去在服务器上调用脚本 环境变量没有去自动加载 代码打包的时候总是提示相关的so文件找不到 解决方案在 相关程序的make之前 把环境变量加在前面 我这里直接将变量加载代码的最前面...
使用 Go 语言中的 Context 取消协程执行
使用 Go 语言中的 Context 取消协程执行 在 Go 语言中,协程(goroutine)是一种轻量级的线程,非常适合处理并发任务。然而,如何优雅地取消正在运行的协程是一个常见的问题。本文将通过一个具体的例子来展示如何使用 con…...
python图像彩色数字化
效果展示: 目录结构: alphabets.py GENERAL {"simple": "%#*-:. ","complex": "$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~<>i!lI;:,\"^. " } # Full list could be found here…...
cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection
原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection,构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…...
docker 僵尸进程问题
docker僵尸进程 子进程结束后,父进程没有回收该进程资源(父进程可能没有wait),子进程残留资源存放与内核中,就变为僵尸进程(zombie) 场景分析:python脚本A中执行B应用,将A部署在docker中&#…...
微软要求 Windows Insider 用户试用备受争议的召回功能
拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall,这是一项臭名昭著的快照拍摄 AI 功能,在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示:“我们听…...
husky,commit规范,生成CHANGELOG.md,npm发版
项目git提交工程化(钩子,提交信息commit message),npm修改版本,需要涉及到的包: husky,允许在git钩子中执行不同的脚步,如commitlint,eslint,prettier&#…...
做示意图的网站/成都关键词seo推广平台
自2013年e3首次公开到发售,《Below》这款游戏到发售足足让玩家们等待了5年。这款有着优秀美术的俯视角冒险游戏从一开始就吸引了不少玩家的关注。但除了每年极少的播片,你甚至都不了解这游戏的主要玩法是什么,只能从开发者的只言片语中了解到…...
外贸哪些免费网站开发客户/注册公司网上申请入口
background-image 属性是 CSS 的一个用于为元素设置背景图片的属性。语法如下: background-image: url(image.jpg);其中 url(image.jpg) 就是指定图片的地址。可以使用相对路径或绝对路径,也可以使用其他图片引用方式,如 data URI。 使用 bac…...
wordpress+刷新/怎么制作一个网页
作者:chris 来自:IBM 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel,pdf等文档的内容?我研究了一下,在这里总结一下抽取word,pdf的几种方法。 1. 用jaco…...
温州 网站建设/站长之家新网址
电脑蓝屏是在上网的时候再常见到的现象了,造成电脑蓝屏的原因很多,所以微软在操作系统中设计了蓝屏代码,让大家电脑在出现蓝屏的时候能够及时的发现是什么原因造成了蓝屏。一般蓝屏代码都位于屏幕提示文字的第一段或者倒数第三段,…...
网站死循环/免费网站推广网站破解版
自学部分学习能力强并且有自制力的人还是可以学习成功的,那么如何自学Web前端开发? 我们首先得知道Web前端开发工程师是什么?工作内容有哪些?百度一下就可以知道,Web前端开发主要进行网站开发,优化…...
高端网站建设网页设计/搜索引擎优化的要点
📖本篇内容:leetcode每日一题382. 链表随机节点 链表随机数使用 或 蓄水池抽样 小学抽卡问题 📑 文章专栏:leetcode每日一题《打卡日常》 📆 最近更新:2022年1月15日 leetcode每日一题1716. 计算力扣银行…...