🏡 博客首页:派 大 星
⛳️ 欢迎关注 ❤️ 点赞 🎒 收藏 ✏️ 留言
🎢 本文由派大星原创编撰
🚧 系列专栏:Docker—云原生
🎈 本系列记录容器化技术的初次探险与深入思考历程,如有描述有误的地方还望诸佬不吝赐教
文章目录
🍇 是什么
镜像是一种轻量级、可执行的独立软件包、它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境
(包括代码、运行时需要的库、环境变量和配置文件等)
这个打包好的运行环境就是image
镜像
🍓 分层的镜像
为什么说Docke的镜像是分层的呢?以拉取镜像为例,在拉取镜像的过程中可以看到Dock的镜像好像是在一层一层的下载
🍒 UnionFS(联合文件系统)
UnionFS
(联合文件系统):Union
文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改操作为一次提交来一层层的叠加,同时可以将不同目录下挂载到同一个虚拟文件系统下(uniteseveral directories into a single virtual filesystem)
。Union文件系统时Docker
镜像的基础。镜像可以通过分层来进行继承,基于镜像的基础(没有父镜像),可以制作各种具体的应用镜像。就像搭积木一样,一块一块的搭建起来,成为各种形状的玩具,最后把整体暴露出来,而对于Docker而言,就是一次同时加载多个文件系统,从外面看起来只有一个文件系统,联合文件会把各层文件系统叠加起来,这样最终的文件系统会包含所有的底层文件和目录
🌍 Docker镜像的加载原理
Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是上述所介绍的联合文件系统
UnionFS
。
bootfs(boot file system)
主要包含bootloader
和kernel
,.bootloader
主要是引导加载kernel,
.Linux刚启动时会加载oootfs文件系统,在Docker
镜像的最底层是引导文件系统bootfs
。这一层与我们典型的Linux/Unix
系统是一样的,包含boot
加载器和内核。当boot
加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs
。
rootfs(root file system)
,在bootfs之上。包含的就是典型Linux系统中的/dev,proc,bin,/etc
等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Jbuntu,Centos等等。
而Docker采用这种分层的结构的最大好处就是资源共享,方便复制迁移也就是提高了复用性。
注: Docker镜像层都是只读的,容器层是可写的
🥝 动动手提交属于自己的镜像
如何去提交容器成为一个新的镜像呢?
可以使用Docker命令来提交一个属于自己的镜像,给原本单调的镜像重新赋予“生命力”
操作命令如下:
docker commit
提交容器副本使之成为全新的镜像
docker commit -m=""
可以在提交时描述一些基本信息
docker commit -a=""
可以填写上作者的名称
🌽 演示为Ubuntu安装vim
首先拉取
Ubuntu
镜像后才可以进行接下来的操作
# 1. 拉取Ubuntu镜像
docker pull ubuntu
# 2. 启动镜像
docker run -it ubuntu /bin/bash
在Docker中拉拉取的
Ubuntu
是一个简易版的Linux
系统,它只包含一些主要的功能,原始默认的Ubuntu镜像是不带vim
命令的
外网连通的情况下,为
Docker
中的Ubuntu
安装vim
# 首先更新包管理工具
apt-get update
# 其次安装vim
apt-get install vim
此时在使用
vim
命令就可以编辑文件了!
最后执行命令来提交带有
vim
的Ubuntu镜像吧!