当前位置: 首页 > news >正文

【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. 服务器 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)中的镜像层是相同的,就会直接挂载(引用)这些已经存在于公共仓库的层,而不是再次传输相同的数据来重新构建这些层。这样可以显著提高效率,避免重复的网络传输和存储开销。

相关文章:

【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强制转换示例。 &#xff08;1&#xff09; 一元加号、一元减号- 值是布尔值&#xff0c;true将被转换为1&#xff0c;false将被转换为0。 let a "123"; let b a; // b的值为123&#xff0c;类型为Nu…...

【通俗理解】步长和学习率在神经网络中是一回事吗?

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

【PTA】【数据库】【SQL命令】编程题2

数据库SQL命令测试题2 测试题目录 10-1 查询“李琳”老师所授课程的课程名称10-2 查询成绩比所有课程的平均成绩高的学生的学号及成绩10-3 创建带表达式的视图StuView10-4 从视图PerView中查询数据10-5 查询工资高于在“HR”部门工作的所有员工的工资的员工信息10-6 查询选修的…...

Spring Boot林业产品推荐系统:用户指南

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此林业产品销售信…...

【Conda 】Conda 配置文件详解:优化你的包管理与环境设置

目录 引言一、什么是 .condarc 文件&#xff1f;二、.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…...

设计模式 外观模式 门面模式

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

Prophet时间序列算法总结及python实现案例

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

远程调用 rpc 、 open feign

在学习黑马 springcloud 视频的时候&#xff0c;看到 open feign 使用&#xff0c; 就是 http 封装。 spring框架三部曲&#xff0c;导入依赖&#xff0c;加配置&#xff0c;使用api。...

Redis的几种持久化方式

Redis 提供了两种主要的持久化方式&#xff0c;它们分别是&#xff1a; 1. RDB&#xff08;Redis Database Snapshotting&#xff09; RDB 是 Redis 的一种数据持久化方式&#xff0c;它会在指定的时间间隔内对 Redis 中的数据进行快照并保存到硬盘上。 特点&#xff1a; 触…...

论文笔记(五十九)A survey of robot manipulation in contact

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

c#控制台程序26-30

26.寻找并输出11至999之间的数m&#xff0c;它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数&#xff0c;例如121&#xff0c;676&#xff0c;94249等。满足上述条件的数如m11,m2121,m31331皆为回文数。请编制函数实现此功能&#xff0c;如果是回文数&#…...

环形链表系列导学

问题描述 给定一个单链表,可能存在一个环。我们的目标是找到环的入口节点,即从这个节点开始,链表进入循环。如果没有环,则返回 null。 将链表问题转化为数学问题 状态序列与循环 我们可以将链表节点视为状态,每个节点的 next 指针代表状态转移函数 f f f。从头节点开始,我…...

IDEA2024创建一个spingboot项目

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

Nginx:ssl

目录 部署ssl前提 nginx部署ssl证书 部署ssl部署建议 部署ssl前提 网站有域名根据域名申请到ssl证书&#xff0c;并下载证书部署到nginx中 部署了ssl证书后&#xff0c;访问的流量是加密的。 nginx部署ssl证书 #80端口跳转到443 server {listen 80;return 302 https://1…...

QT配置文件详解

TEMPLATElib TEMPLATE变量用于指定项目模板类型&#xff0c;其值可以是以下几种&#xff1a; app&#xff1a;建立一个应用程序的makefile&#xff0c;这是默认值。lib&#xff1a;建立一个库的makefile。vcapp&#xff1a;建立一个应用程序的Visual Studio项目文件。vclib&a…...

根据合约地址判断合约协议的方法

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

联想YOGA Pro 14s至尊版电脑找不到独立显卡(N卡)问题,也无法安装驱动的问题

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

Spring Web开发注解和请求(1)

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

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...