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. 启动我们的新镜像并和原来的对比


相关推荐
Mao.O11 分钟前
RabbitMQ延迟消息插件安装(Docker环境)
docker·rabbitmq·延迟消息发送
神技圈子13 分钟前
【linux经典工具】作为一个合格的开发人员怎能不会tmux
linux·运维·服务器
龙萱坤诺15 分钟前
AI自动评论插件V1.3 WordPress插件 自动化评论插件
运维·人工智能·自动化
weixin_4483505016 分钟前
探索自动化数据清洗技术的前沿趋势
大数据·运维·自动化·数据治理·数据提取
Bold!26 分钟前
最新ubuntu22.04 下列软件包有未满足的依赖关系 解决方案
linux·运维·服务器
pyliumy1 小时前
docker的安装配置与基本简单命令
运维·docker·容器
itachi-uchiha1 小时前
Linux特种文件系统--tmpfs文件系统
linux·运维·服务器
会写代码的孙悟空1 小时前
windows下解决端口被占用,但是找不到占用端口的应用程序;以一种访问权限不允许的方式做了一个访问套接字的尝试;搜索可用端口
运维·网络·windows
陌夏微秋1 小时前
02 Linux常用软件——vi、vim
linux·运维·vim
芭啦啦*1 小时前
2024.10.29- Linux(CentOS7)笔记(1)
linux·运维·笔记