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

server/2024/11/26 21:29:49/

镜像底层实现的原理

    • 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/server/137801.html

相关文章

Java/Springboot使用iText生成PDF

iText是一个用于创建和操作PDF文档的Java库。 常见使用步骤和示例如下&#xff1a; 1. 添加依赖 如果使用Maven项目&#xff0c;在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</ar…

HTML鼠标移动的波浪线动画——页面将会初始化一个Canvas元素,并使用JavaScript代码在Canvas上绘制响应鼠标移动的波浪线动画

代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Wave Animation</title><style&…

用sdcc给51单片机编译C程序

学习单片机大部分人用的是Keil uVision&#xff0c;虽然好用&#xff0c;可大部分人用的是盗版&#xff0c;其实单片机程序小的话&#xff0c;完全可以用文本编辑器&#xff08;推荐notepad)编写&#xff0c;然后用免费的sdcc来编译&#xff0c;下面介绍一下大致的过程。 sdcc…

Python单元测试:`unittest`框架详解

unittest是Python标准库中的一个单元测试框架&#xff0c;它是基于Java的JUnit框架开发的。unittest支持自动化测试&#xff0c;设置和关闭代码以供测试&#xff0c;聚合测试到集合中以及独立的测试脚本运行。 unittest的主要特点 测试用例&#xff1a;通过继承unittest.Test…

海外云手机是什么?对外贸电商有什么帮助?

在外贸电商领域&#xff0c;流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机&#xff0c;通过TikTok等社交平台吸引流量&#xff0c;以推动商品在海外市场的销售。那么&#xff0c;海外云手机到底是什么&#xff1f;它又能为外贸电商卖家提供哪些支持呢…

从零开始:大模型面试题全面指南(含答案)

最近秋招正在如火如荼地进行中&#xff0c;看到很多人的简历上都包含大模型相关的工作&#xff0c;各家大厂和初创都很舍得给钱&#xff0c;动辄百万年包也变得不再稀奇。 因此在大模型纵横的这个时代&#xff0c;不仅大模型技术越来越卷&#xff0c;就连大模型相关的岗位和面…

ubuntu知识点滴积累

基本的语法和知识积累 基本的一些常用关键词 ls (列出文件和文件夹) 用法&#xff1a;ls [选项] [目录] ◦ 示例&#xff1a; ls&#xff1a;列出当前目录的文件和文件夹。 ls -l&#xff1a;以长格式显示详细信息&#xff08;权限、所有者、大小、时间戳等&#xff…

自建html首页

html首页 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>首页</title><!-- 引入 highl…