Docker | 通过commit操作实例来认识镜像底层实现的原理以及学会打包镜像

ops/2024/11/2 7:16:33/

镜像底层实现的原理

    • docker 镜像
      • 镜像是什么?
      • 分层的镜像
      • UnionFS(联合文件系统)
      • 为什么Docker镜像要采用这种分层结构呢?
      • 打包镜像 docker commit ⭐⭐
        • ubuntu安装vim

docker__1">docker 镜像

镜像是什么?

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

分层的镜像

在这里插入图片描述
通过上述 得知 镜像是分层的

UnionFS(联合文件系统)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

为什么Docker镜像要采用这种分层结构呢?

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
比如说有多个镜像都从相同的base镜像构建而来,那么Docker Host只需在磁盘上保存一份base镜像;同时内存中也只需加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

docker__commit____27">打包镜像 docker commit ⭐⭐

docker commit:提交容器副本使之成为一个新的镜像

ubuntu安装vim
  1. 从Hub上下载ubuntu镜像到本地并成功运行
docker run ubuntu
  1. 原始的默认Ubuntu镜像是不带着vim命令的
root@d594d28e292d:/# vim --help
bash: vim: command not found
root@d594d28e292d:/#
  1. 外网连通的情况下,安装vim
docker?容器内执行上述两条命令:
apt-get update   # 更新包管理工具
apt-get  -y install vim  # 安装所需要的vim

在这里插入图片描述
在这里插入图片描述

  • 测试
    在 a.txt 输入语句 使用cat输出命令
    在这里插入图片描述
  1. 安装完成后,commit我们自己的新镜像
[root@localhost zyan]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED       STATUS       PORTS     NAMES
d594d28e292d   ubuntu    "bash"    5 hours ago   Up 5 hours             magical_knuth[root@localhost zyan]#  docker commit -m='+vim' -a='zyan' d594d28e292d zyan/hgubuntu:1.1
sha256:ca7abefb7af77901ddb84af423a3f7e50d6a30807224670e3239487120899f04[root@localhost zyan]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED       STATUS       PORTS     NAMES
d594d28e292d   ubuntu    "bash"    5 hours ago   Up 5 hours             magical_knuth[root@localhost zyan]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
zyan/hgubuntu   1.1       ca7abefb7af7   31 seconds ago   191MB
ubuntu          latest    59ab366372d5   2 weeks ago      78.1MB
redis           6.0.8     16ecd2772934   4 years ago      104MB

在这里插入图片描述
5. 启动我们的新镜像并和原来的对比

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/ops/130357.html

相关文章

Blender进阶:着色器节点

11 着色器节点 11.1着色器 着色器Shader,负责给物体表面着色。 综合以下参数: -基础色-金属度、粗超度、透明度-法向-入射光颜色、强度、角度。。 着色器本质上是一段程序、算法,即着色器编程。 在节点编辑器中,支持算法的可…

Docker:存储原理

Docker:存储原理 镜像联合文件系统overlay镜像存储结构容器存储结构 存储卷绑定挂载存储卷结构 镜像 联合文件系统 联合文件系统Union File System是一种分层,轻量且高效的文件系统。其将整个文件系统分为多个层,层与层之间进行覆盖&#x…

kubeadm快速自动化部署k8s集群

目录 一、准备环境 二、安装docker--三台机器都操作 三、使用kubeadm部署Kubernetes 在所有节点安装kubeadm和kubelet、kubectl 配置启动kubelet(所有主机) master节点初始化 Mater重新完成初始化 执行Master初始化后的提示配置 配置使用网络插件 创建flannel网络 …

KPRCB结构之ReadySummary和DispatcherReadyListHead

ReadySummary: Uint4B DispatcherReadyListHead : [32] _LIST_ENTRY 请参考 _KTHREAD *__fastcall KiSelectReadyThread(ULONG LowPriority, _KPRCB *Prcb)

Java Web 核心知识点总结

Java Web 核心知识点总结 一、HTTP协议 核心概念 请求/响应模型无状态协议持久连接 关键要素 请求方法(GET/POST/PUT/DELETE)状态码(2xx成功/3xx重定向/4xx客户端错误/5xx服务器错误)常用请求头和响应头 二、Servlet 生命周期 加载类创建实例(单例)init()初始化service()服…

基于SpringBoot+Vue技术的宇宙动漫网站【前后端分离】

基于SpringBootVue技术的宇宙动漫网站设计与实现 摘要 宇宙动漫网站是一个为动漫爱好者提供观看、讨论和分享的平台,致力于打造一个全面且便捷的动漫资源平台。该网站使用SpringBoot和Vue技术栈,通过后端提供数据接口支持和数据存储,前端实现…

Jetson AGX Orin 实现相机雷达联合标定

Jetson AGX Orin 实现相机雷达联合标定. 使用autoware标定工具,联合标定lidar和相机,计算出内外参等参数, 实现点云目标映射到图像上. 点云分隔目标映射图片 环境安装参考: Jetson AGX Orin 安装 Autoware calibration_toolkit 标定工具 标定雷达和相机 新开终端 roscore 新…

工厂方法模式与抽象工厂模式

工厂方法模式 (Factory Method) 定义: 工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定实例化哪个类。工厂方法将类的实例化推迟到子类。 优点: 解耦:客户端代码与具体的产品类解耦…