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

目录

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

测试:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「QT」几何数据类 之 QVector3d 三维向量类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

人工智能(AI)对于电商行业的变革和意义

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/402a907e12694df5a34f8f266385f3d2.png#pic_center> 🎓作者简介:全栈领域优质创作者 🌐个人主页:百锦再新空间代码工作室 📞工作室:新空间代…

物联网设备研究——分配推理负载的联合学习方法

概述 物联网(IoT)的最新发展导致人工智能模型被嵌入到传感器和智能手机等终端设备中。这些模型是根据每个设备的存储容量和计算能力定制的,但重点是在终端侧进行本地推理,以降低通信成本和延迟。 然而,与部署在边缘服…

CentOS Stream 9设置静态IP

CentOS Stream 9设置静态IP CentOS Stream 9作为CentOS Stream发行版的下一个主要版本,已经发布有一段时间,但与目前广泛使用的CentOS7有较大区别。安装试用Stream 9的过程中,就发现设置静态IP的方式和CentOS7/8差别较大,在此记录…

【嵌入式】ESP32开发(一)ESP-IDF概述

文章目录 1 前言2 IDF环境配置3 在VS Code中使用IDF3.1 使用ESP-IDF例程3.2 底部按钮的作用【重要!】3.3 高级用法4 ESP-IDF框架分析5 从零开始创建一个项目5.1 组件(component)6 主要参考资料7 遇到的一些问题与解决办法8 对于ESP-IDF开发的一些感受1 前言 对于ESP32的开发…

基于Multisim水箱水位控制系统仿真电路(含仿真和报告)

【全套资料.zip】水箱水位控制系统仿真电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.在水箱内的不同高度安装3根金属棒,以感知水位变化情况, 液位分1&…

解读Nature:Larger and more instructable language models become less reliable

目录 Larger and more instructable language models become less reliable 核心描述 核心原理 创新点 举例说明 大模型训练,微调建议 Larger and more instructable language models become less reliable 这篇论文的核心在于对大型语言模型(LLMs)的可靠性进行了深入…

zabbix监控端界面时间与服务器时间不对应

1. 修改系统时间 # tzselect Please select a continent, ocean, "coord", or "TZ".1) Africa2) Americas3) Antarctica4) Asia5) Atlantic Ocean6) Australia7) Europe8) Indian Ocean9) Pacific Ocean 10) coord - I want to use geographical coordina…

ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动

一、Spinnaker 安装 1.1Spinnaker 下载 下载地址为: https://www.teledynevisionsolutions.com/support/support-center/software-firmware-downloads/iis/spinnaker-sdk-download/spinnaker-sdk–download-files/?pnSpinnakerSDK&vnSpinnakerSDK 在上述地址中…

Windows配置JDK

1、解压 下载以后解压,放在一个没有中文路径和没有空格的目录,如下图: 2、配置Java环境 1)、点击左下角windows图标,输入huanjing(或者path),打开环境变量配置 如图: …

Unity教程(十八)战斗系统 攻击逻辑

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

HCIP-HarmonyOS Application Developer 习题(二十三)

1、(多选)端云一体化已经集成以下哪些服务SDK。 A、云函数 B、云数据库 C、云存储 D、云托管 答案:AB 分析:云开发即为应用开发云侧工程,目前包含云函数与云数据库工程。 2、(多选)Entry下的m…

图数据库 | 5、图数据库三大组件之一 之 图计算 (下)

书接上文:图数据库 | 4、图数据库三大组件之一 ——图计算 (上)-CSDN博客 结合计算效率来评估与设计图计算所需的数据结构。 存储低效性或许是相邻矩阵或关联矩阵等数据结构的最大缺点,尽管它有着O(1)的访问时间复杂度。例如通过…

Android OpenGL ES详解——纹理:纹理过滤GL_NEAREST和GL_LINEAR的区别

目录 一、概念 1、纹理过滤 2、邻近过滤 3、线性过滤 二、邻近过滤和线性过滤的区别 三、源码下载 一、概念 1、纹理过滤 当纹理被应用到三维物体上时,随着物体表面的形状和相机视角的变化,会导致纹理在渲染过程中出现一些问题,如锯齿…

【java】java通过s3访问ceph报错

1.报错信息、背景 工作中起了几个访问ceph的服务pod节点,一段时间后1个节点一直报错Unable to execute HTTP request: Timeout waiting for connection from pool,详细i信息如下图片,有且仅有1个节点报错,其他节点访问正常。看日志…

对于目标文件太大无法拉入u盘事件的解决方法

问题: 解决方法: 1.按住win r 键打开运行,输入cmd,点击确定。 2.输入convert 盘符(你自己的u盘的盘符): /fs:ntfs并单击回车

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

Linux(CentOS)yum update -y 事故

CentOS版本:CentOS 7 事情经过: 1、安装好CentOS 7,系统自带JDK8,版本为:1.8.0_181 2、安装好JDK17,版本为:17.0.13 3、为了安装MySQL执行了 yum update -y(这个时候不知道该命令的…

【操作系统】输入/输出(I/O)管理

王道笔记 一、I/O管理描述 1.1 I/O设备的概念和分类 1.1.1 什么是I/O设备 “I/O”就是“输入/输出”(Input/Output) I/O设备机会可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。下图就…

HarmonyOS App 购物助手工具的开发与设计

文章目录 摘要引言功能需求分析技术方案与设计架构设计技术选型 代码示例Demo数据抓取模块数据存储模块历史价格查询和数据可视化模块完整界面布局和调用示例代码详解 QA环节总结参考资料 摘要 随着促销活动的增多,用户面临真假折扣的困惑,特别是在一些…