05-镜像原理&Commit镜像

本文详细介绍了Docker镜像的原理,重点讲解了联合文件系统(UnionFS)在镜像分层中的作用,以及如何通过Dockerfile创建和下载镜像。在实战部分,展示了如何启动容器,修改容器内的内容,并通过`docker commit`提交一个新的镜像。这一过程揭示了Docker镜像是只读的,而容器在其顶部添加了一个可写层。通过这种方式,用户可以基于基础镜像创建个性化的应用镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

镜像原理之联合文件系统

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

如何得到镜像∶

  • 从远程仓库下载
  • 朋友拷贝给你
  • 自己制作一个镜像DockerFile

docker镜像加载原理

UnionFS(联合文件系统)

我们下载的时候看到的一层层就是这个!
UnionF(联合文件系统):Union文件系统(UnionFS )是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtualfilesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性∶一次同时加驳多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

举例 
比如 mysql tomcat 都需要 centos
那么只会下载一次 ,另一个下载就会从下载完的那个去拿

docker镜像加载原理

在这里插入图片描述

镜像原理之分层理解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

特点

Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部!

这一层就是我们通常说的容器层,容器之下的都叫镜像层!
在这里插入图片描述

如何提交一个自己的镜像?

Commit镜像

Commit镜像

docker commit   提交容器成为一个新的副本

# 命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

实战测试

[root@tianqinglong /]# docker run -it -p 8080:8080 tomcat

[root@tianqinglong /]# docker exec -it tomcat容器id /bin/bash
# 发现这个默认的tomcat是没有webapps应用,镜像的原因,官方的镜像默认 webapps下面是没有文件的!
root@7e119b82cff6:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@7e119b82cff6:/usr/local/tomcat# cd webapps
root@7e119b82cff6:/usr/local/tomcat/webapps # ls 
ROOT docs example host-manager manager

# 提交
docker commit -a="kuangshen" -m="add webapps app" 7e119b82cff6 tomcat02:1.0

docker images # 查看镜像 发现tomcat2
# 我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像
如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比我们以前学习时候,快照!

到了这里才算是入门Dokcer !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值