【docker】9. 镜像操作与实战

news2024/12/5 2:10:48

镜像操作案例

查找镜像

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.0
 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 RX packets:7 errors:0 dropped:0 overruns:0 frame:0
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 collisions: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.0
 UP LOOPBACK RUNNING MTU:65536 Metric:1
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 collisions: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. 服务器 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
  1. 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
  1. 第二台机器从 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
  1. 执行 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

实战二、镜像存储的压缩与共享

  1. 拉取 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
  1. Docker images 查看本地镜像,可以看到该镜像为 142Mb
  2. 从上面看到 nginx 为 1.21.1 的大小是 140 多 MB,但是我们从 docker hub 上查看可
    以看到镜像是 50 多 MB,说明发生了压缩,因为仓库到本地需要走网络,所以文件越
    小越好
    在这里插入图片描述
  3. 把一个镜像打多个 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
  1. 添加一个新的镜像到我们的仓库的时候,如果 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)中的镜像层是相同的,就会直接挂载(引用)这些已经存在于公共仓库的层,而不是再次传输相同的数据来重新构建这些层。这样可以显著提高效率,避免重复的网络传输和存储开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2252697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…

Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用

人工智能的高速发展开启了飞轮效应&#xff0c;实施数字化变革成为了企业的一道“抢答题”和“必答题”&#xff0c;而数据已成为现代企业的命脉。以HPC和AI为代表的新业务就像节节攀高的树梢&#xff0c;象征着业务创新和企业成长。但在树梢之下&#xff0c;真正让企业保持成长…

图数据库 | 10、图数据库架构设计——高性能图存储架构(上)

老夫在之前的三大篇内容中&#xff0c;介绍了图数据库的三大组件—图计算、图存储以及图查询语言。&#xff08;都归拢在图数据库原理、架构与应用这个专栏中了&#xff0c;感兴趣的朋友可以在去找阅读。&#xff09; 接下来&#xff0c;老夫还将继续深化这三大组件&#xff0…

保护数据,构建信任:联邦学习与差分隐私在AI训练中的实践

文章目录 摘要引言什么是联邦学习&#xff1f;AI模型训练中的数据隐私挑战数据隐私面临的主要问题 联邦学习与差分隐私技术联邦学习的关键流程代码示例差分隐私技术联邦学习与差分隐私结合案例 QA环节总结参考资料 摘要 在人工智能快速发展的背景下&#xff0c;模型训练对数据…

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

ThingsBoard规则链节点:Kafka 节点详解

引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能&#xff0c;允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中&#xff0c;Kafka 节点用于将消息发送到 Apache Kafka …

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 微信…

阿里云 Elastic Enterprise 正式上线!

在数据驱动的商业环境中&#xff0c;企业面临着日益复杂的数据管理与分析挑战。阿里云Elasticsearch服务不仅免费提供了 Elastic 原厂的 Enterprise 版本功能&#xff0c;更凭借其增强的数据管理能力、智能AI分析、先进的搜索技术以及全面的安全特性&#xff0c;致力于为企业提…

1201作业

思维导图 作业 头函数 #include <myhead.h> #include"linklist.h" int main(int argc, const char *argv[]) {//调用创建链表函数node_ptr L list_create();if(NULL L){return -1;}//调用头插函数list_insert_head(L,Q);list_insert_head(L,W);list_insert…

【Code First】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

大语言模型微调与 XTuner 微调实战

1 大语言模型微调 1.1 什么是微调 大语言模型微调&#xff08;Fine-tuning of Large Language Models&#xff09;是指在预训练的大型语言模型基础上&#xff0c;使用特定任务的数据进一步训练模型&#xff0c;以使其更好地适应和执行特定任务的过程&#xff0c;用于使LLM&am…

Vulnhub靶场 Matrix-Breakout: 2 Morpheus 练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 文件上传2. 提权 0x04 总结 0x00 准备 下载连接&#xff1a;https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 介绍&#xff1a; This is the second in the Matrix-Br…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理&#xff0c;也算是我对于暑假的一个交代 &#xff01;&#xff01;&#xff01;注意&#xff1a;下面的操作是基于你已经安装了node.js和git的前提下进行的&#xff0c;并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

24.12.02 Element

import { createApp } from vue // 引入elementPlus js库 css库 import ElementPlus from element-plus import element-plus/dist/index.css //中文语言包 import zhCn from element-plus/es/locale/lang/zh-cn //图标库 import * as ElementPlusIconsVue from element-plus/i…

vxe-table 设置树表格斑马线条纹样式

vxe-table 设置斑马线条纹样式&#xff0c;通过设置 stripe 参数 官网&#xff1a;https://vxetable.cn 表格 斑马线条纹&#xff0c;通过设置 stripe 参数 <template><div><vxe-grid v-bind"gridOptions"></vxe-grid></div> </…

力扣3366.最小数组和

力扣3366.最小数组和 题目 题目解析及思路 题目要求对于数组进行两种操作&#xff0c;使最终数组和最小 注意&#xff1a;每个元素可以同时执行两种操作 考虑动归&#xff0c;暴力的遍历每种情况 代码 记忆化搜索 class Solution { public:// minArraySum 函数用于计算在…

缓存穿透,缓存雪崩,缓存击穿

缓存穿透&#xff1a; 客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样的缓存永远不会生效&#xff0c;这些请求会直接打到数据库中&#xff0c;造成数据库压力过大 解决方法&#xff1a;1.缓存空对象 //TODO 此方法中解决了缓存穿透问题&#xff08;使用了缓存…

【C++boost::asio网络编程】有关异步读写api的笔记

异步读写api 异步写操作async_write_someasync_send 异步读操作async_read_someasync_receive 定义一个Session类&#xff0c;主要是为了服务端专门为客户端服务创建的管理类 class Session { public:Session(std::shared_ptr<asio::ip::tcp::socket> socket);void Conn…

atcoder abc 382 lazy_tag线段树

A Daily Cookie 代码&#xff1a; #include <bits/stdc.h> using namespace std;typedef long long ll;int main() {int n, d;cin >> n >> d;string s;cin >> s;int cnt d;for(auto t: s) if(t .) cnt ;cout << min(n, cnt); } B Daily Co…

【NLP 8、normalization、sigmoid,softmax归一化函数】

"燃尽最后的本能&#xff0c;意志力会带你杀出重围" —— 24.12.2 1. Normalization&#xff08;归一化&#xff09; 归一化是将数据转换为具有统一尺度的形式&#xff0c;通常用于数据预处理阶段。常见的归一化方法包括 Min-Max归一化、Z-Score 归一化和 L…