[Docker#6] 镜像 | 常用命令 | 迁移镜像 | 压缩与共享

news2024/12/29 9:49:08

目录

Docker 镜像是什么

生活案例

为什么需要镜像

镜像命令详解

实验

1.一些操作

1. 遍历查看镜像

2. 查看镜像仓库在本地的存储信息

进入镜像存储目录

查看 repositories.json 文件

3. 镜像过滤

4. 下载镜像时的分层

实战一:离线迁移镜像

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


Docker 镜像是什么

  • 定义:Docker image 是一个只读文件,包含文件系统、源码、库文件、依赖、工具等运行应用所需的所有文件。
  • 特性:可以理解为一个模板,通过该模板可以实例化出多个容器。镜像内部采用分层文件系统(Union FS),每层文件系统都是只读的。
  • 分层:每层文件系统称为一层 layer,上层的修改会覆盖底层的可见性,最终呈现为一个完整的文件系统。
生活案例

  • 镜像:类似于 Java 或 C++ 中的类,可以方便地构建出不同的对象。
  • 分层:类似房屋装修,最底层是钢筋水泥,依次添加保温层、采暖管、水泥层,最后用户铺设木地板或地砖,每一层都可以独立修改,但最终呈现为一个整体。
为什么需要镜像
  • 一致性解决云端和本地环境的一致性问题,确保应用在不同环境中运行一致。
  • 便捷性:提供了一种打包应用程序和预配置服务器环境的便捷方式,便于个人使用或与他人共享。
镜像命令详解

1.docker images

  • 功能:列出本地镜像。
  • 语法docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 别名docker image ls, docker image list
  • 关键参数
    • -a:列出所有镜像(含中间层)
    • --digests:显示镜像摘要信息
    • -f:显示满足条件的镜像
    • --format:指定返回值的模板
    • --no-trunc:显示完整信息
    • -q:只显示镜像 ID

样例

docker images
docker images ubuntu

2.docker tag

  • 功能:给镜像打标签。
  • 语法docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 别名docker image tag
  • 样例
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

3.docker pull

  • 功能:从镜像仓库拉取镜像。
  • 参考:镜像仓库命令

4.docker push

  • 功能:推送镜像到仓库。
  • 参考:镜像仓库命令

5.docker rmi

  • 功能:删除镜像。
  • 语法docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 别名docker image rm, docker image remove
  • 关键参数
    • -f:强制删除
    • --no-prune:不移除过程镜像
  • 样例
docker rmi maxhou/mybusybox:v0.1

6.docker save

  • 功能:将镜像保存为 tar 归档文件。
  • 语法docker save [OPTIONS] IMAGE [IMAGE...]
  • 别名docker image save
  • 关键参数
    • -o:输出文件路径
  • 样例
docker save -o mynginx_1.22.1.tar nginx:1.22.1

7.docker load

  • 功能:导入使用 docker save 导出的镜像。
  • 语法docker load [OPTIONS]
  • 别名docker image load
  • 关键参数
    • --input, -i:指定导入文件
    • --quiet, -q:精简输出信息
  • 样例
docker load -i mynginx_1.22.1.tar

8.docker image inspect

  • 功能:查看镜像详细信息。
  • 语法docker image inspect [OPTIONS] IMAGE [IMAGE...]

样例

docker image inspect nginx:1.23.3

9.docker history

  • 功能:显示镜像历史。
  • 语法docker history [OPTIONS] IMAGE
  • 别名docker image history
  • 关键参数
    • -H, --human:易读格式
    • --no-trunc:显示全部信息
    • -q, --quiet:只显示镜像 ID

样例

docker history nginx:1.21.1

10.docker import

  • 功能:从归档文件中创建镜像。
  • 语法docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
  • 别名docker image import
  • 关键参数
    • -c:应用 Docker 指令
    • -m:提交说明

样例

docker import my_ubuntu_v3.tar maxhou/ubuntu:v4

在后面的文章中会再详细的讲解

11.docker image prune

  • 功能:删除不使用的镜像。
  • 语法docker image prune [OPTIONS]
  • 关键参数
    • -a, --all:删除所有未使用的镜像
    • --filter:指定过滤条件
    • -f, --force:不提示删除
  • 样例
docker image prune

12.docker build

  • 功能:使用 Dockerfile 创建镜像。
  • 语法docker build [OPTIONS] PATH | URL | -
  • 关键参数
    • --build-arg=[]:设置镜像创建时的变量
    • -f:指定 Dockerfile 路径
    • --label=[]:设置镜像元数据
    • --no-cache:不使用缓存
    • --pull:尝试更新镜像
    • --quiet, -q:安静模式
    • --tag, -t:镜像名称及标签
    • --network:设置网络模式

样例

docker build -t mynginx:v1 .

实验

1.一些操作

1. 遍历查看镜像

使用 docker images 命令可以列出本地所有镜像。可以通过指定仓库名来过滤特定的镜像。

2. 查看镜像仓库在本地的存储信息

Docker 镜像的存储位置默认在 /var/lib/docker 目录下。可以通过修改配置文件来更改存储位置。

进入镜像存储目录
root@139-159-150-152:/data/var/lib/docker/image/overlay2# cd /data/var/lib/docker/image/
root@139-159-150-152:/data/var/lib/docker/image#
查看 repositories.json 文件

repositories.json 文件记录了已拉取镜像的信息

3. 镜像过滤
  • 根据仓库名列出镜像
docker image ls ubuntu
  • 列出特定的某个镜像(指定仓库名和标签)
docker image ls ubuntu:18.04

使用过滤器参数 --filter-f

  • 查看某个位置之前的镜像
docker image ls -f before=ubuntu:18.04
  • 查看某个位置之后的镜像
docker image ls -f since=ubuntu:18.04
4. 下载镜像时的分层

下载镜像时,可以看到镜像是分层下载的。


实战一:离线迁移镜像

# 步骤1:保存镜像为tar文件
docker save -o busybox.tar busybox
# 步骤2:拷贝镜像到第二台服务器
scp busybox.tar root@43.138.218.166:/data/maxhou
# 步骤3:从tar文件中恢复镜像
docker load -i busybox.tar
# 步骤4:检查镜像是否正常运行
docker run -it --rm busybox:1.36.0 sh

测试:

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

# 步骤1:拉取nginx镜像
docker pull nginx:1.22.1
# 步骤2:查看本地镜像
docker images
# 步骤4:为镜像打多个tag并推送
docker tag nginx:1.22.1 maxhou/mybitnginx:1.22.1
docker tag nginx:1.22.1 maxhou/mybitnginx:1.22.2
# 重复上述命令,为更多版本打tag
docker push maxhou/mybitnginx -a
# 步骤5:添加新镜像到仓库
docker tag nginx:1.16.1 maxhou/mybitnginx:1.16.1
docker push maxhou/mybitnginx:1.16.1

测试:

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

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

相关文章

信用租赁系统的灵活配置与智能化管理助力租赁市场发展

内容概要 在现代租赁市场中,信用租赁系统就像一把金钥匙,打开了灵活配置与智能化管理的大门。首先,让我们看看它是如何运作的。这个系统允许用户根据自身需求自定义设备类型和信用分比例,不同租赁形式的选择使得整个过程更加个性…

Java基于SpringBoot+Vue框架的宠物寄养系统(V2.0),附源码,文档

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

游戏引擎学习第四天

视频参考:https://www.bilibili.com/video/BV1aDmqYnEnc/ BitBlt 是 Windows GDI(图形设备接口)中的一个函数,用于在设备上下文(device context, DC)之间复制位图数据。BitBlt 的主要用途是将一个图像区域从一个地方复…

OpenGL ES 文字渲染进阶--渲染中文字体

旧文 OpenGL ES 文字渲染方式有几种? 一文中分别介绍了 OpenGL 利用 Canvas 和 FreeType 绘制文字的方法。 无论采用哪种方式进行渲染,本质上原理都是纹理贴图:将带有文字的图像上传到纹理,然后进行贴图。 渲染中文字体 利用 Canvas 绘制中文字体和绘制其他字体在操作方式上…

T265相机双目鱼眼+imu联合标定(全记录)

最近工作用到t265,记录一遍标定过程 1.安装驱动 首先安装realsense驱动,因为笔者之前使用过d435i,装的librealsense版本为2.55.1,直接使用t265会出现找不到设备的问题,经查阅发现是因为realsense在2.53.1后就不再支持…

python数据分析|二 IPython和JupyterNotebooks

一 python 解释器 Python解释器同一时间只能运行一个程序的一条语句。 如何适用: win r cmd 要退出Python解释器返回终端,可以输入 exit() 或 Ctrl-D。 假设创建了一个 hello_world.py 文件,它的内容是: 可以用下面的命令运…

集群聊天服务器(2)Json介绍

目录 Json序列化Json反序列化 大家之间交流用json,想要发送数据,就把数据序列化成json,想要接收数据,就反序列化成自己程序的语言。 Json序列化 可以直接赋值一个容器对象 js[‘xx’]vec; #include "json.hpp" using jsonnlohman…

ES信息防泄漏:策略与实践

Elasticsearch(简称ES)作为一个开源的搜索和分析引擎,在实时搜索和分析大量数据方面发挥着重要作用。然而,随着数据的增长,ES的信息安全和隐私保护成为了关键问题。信息防泄漏对于ES来说至关重要,它不仅关乎数据的完整性&#xff…

NVR批量管理软件/平台EasyNVR多个NVR同时管理使用时需要开放的端口

随着科技的飞速发展,视频监控技术已广泛应用于各行各业,成为维护安全、提升效率的重要工具。为了更有效地管理和利用这些宝贵的视频资源,视频联网与整合技术应运而生,旨在打破地域与设备限制,实现视频资源的实时共享与…

设计模式(四)装饰器模式与命令模式

一、装饰器模式 1、意图 动态增加功能,相比于继承更加灵活 2、类图 Component(VisualComponent):定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent(TextView):定义一个对象,可以给这个对象添加一…

PL/SQL执行.sql文件

1.编写.sql文件,创建update.sql文件,文件如下: set feedback offset define off--更新表中所有人的年龄update a set age18;prompt Done. 2.打开plsql选择命令窗口,即选择File->New->Command Window; 打开后的…

改扩配系列:浪潮英政服务器CS5280H2、IR5280H2——板载前置3.5寸*12口背板

机器配置情况 机器是云产品原厂配置的超融合一体机3.5*12背板出厂接法,前置是硬盘背板作为超融合数据盘是直通的,使用板载接口没有过raid卡。 主板上的接口既是pcie转接卡的接口,又是sata控制器的接口,如果是nvme_ssd我能理解&am…

【3D Slicer】的小白入门使用指南四

开源解剖影像浏览工具Open Anatomy Browser使用及介绍 和3D slicer米有太大关系,该工具是网页版影像数据的浏览工具(可以简单理解为网页版的3D slicer) 介绍 ● 开放解剖(OA)浏览器是由神经影像分析中心开发的,基于网络浏览器技术构建的图谱查看器。 ● OA浏览器将解剖模…

基于正则化算法的SAR图像去噪matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1SAR 图像噪声模型 4.2 正则化算法基本原理 5.完整工程文件 1.课题概述 基于正则化算法的SAR图像去噪matlab仿真,仿真输出SAR图像去噪结果,正则化参数收敛曲线,同时…

【2024软考架构案例题】你知道 Es 的几种分词器吗?Standard、Simple、WhiteSpace、Keyword 四种分词器你知道吗?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…

qt QUndoCommand 与 QUndoStack详解

1、概述 QUndoCommand 和 QUndoStack 是 Qt 框架中用于实现撤销/重做(undo/redo)功能的两个核心类。QUndoCommand 是表示单个可撤销操作的基类,而 QUndoStack 则负责管理这些命令的堆栈,提供撤销和重做操作的接口。 QUndoCommand…

数据分析:16s差异分析DESeq2 | Corncob | MaAsLin2 | ALDEx2

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍DESeq2原理计算步骤结果Corncob原理计算步骤结果MaAsLin2原理计算步骤结果ALDEx2原理计算步骤结果加载R包数据链接数据预处理微生物数据样本信息提取物种名称过滤零值保留结果读取…

【模块化大作战】Webpack如何搞定CommonJS与ES6混战(3)

在前端开发中,模块化是一个重要的概念,不同的模块化标准有不同的特点和适用场景。webpack 同时支持 CommonJS 和 ES6 Module,因此需要理解它们在互操作时 webpack 是如何处理的。 同模块化标准 如果导出和导入使用的是同一种模块化标准&…

python入门3

IDE的概念 IDE(Integrated Development Environment)又被称为集成开发环境。说白了,就是有一款图形化界面的软件,它集成了编辑代码,编译代码,分析代码,执行代码以及调试代码等功能。在我们Python开发中,最常…

【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看

【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看 2024年 5月20日-6月4日:攻克2D物理引擎。 2024年 6月4日-6月13日:攻克《3D数学基础》。 2024年 6月13日-6月20日:攻克《3D…