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

镜像底层实现的原理

docker 镜像

镜像是什么?

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。

只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

分层的镜像


通过上述 得知 镜像是分层的

UnionFS(联合文件系统)




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

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

比如说有多个镜像都从相同的base镜像构建而来,那么Docker Host只需在磁盘上保存一份base镜像;同时内存中也只需加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。



打包镜像 docker commit ⭐⭐

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

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


  • 测试
    在 a.txt 输入语句 使用cat输出命令
  1. 安装完成后,commit我们自己的新镜像
clike 复制代码
[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
  1. 启动我们的新镜像并和原来的对比


相关推荐
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn861 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_1 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉1 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦1 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant