推包出现Mounted from 问题
前言
- 多个服务在同一台机器上打镜像包,推送镜像到harbor过程中,可以看到打包日志中出现
Mounted from ***
的字眼,开发同学看到会很疑惑,这打包正常吗?代码跟这个***没有关联的,为什么会出现这个呢? - 比如下面虽然a,b,c,d,e,f,g服务在同一台机器打包镜像,但是他们直接没有联系的,为什么会出现
Mounted from harbor/service-b
呢?
### 部分jenkins打包日志
09:54:25 [开始推送镜像...]
09:54:25 + docker push harbor.com/harbor/service-a:77eb678f7147737a10141ef61c1de16b4955190c
09:54:25 The push refers to a repository [harbor.com/harbor/service-a]
09:54:25 3d8557da29c3: Preparing
09:54:25 3c0f64681754: Preparing
09:54:25 84b15712ff85: Preparing
09:54:25 3638c4b9c60d: Preparing
09:54:25 e7cc650e5dce: Preparing
09:54:25 9e18425967c4: Preparing
09:54:25 3fc9cda50b8a: Preparing
09:54:25 4826cdadf1ef: Preparing
09:54:25 3fc9cda50b8a: Waiting
09:54:25 e7cc650e5dce: Waiting
09:54:25 9e18425967c4: Waiting
09:54:25 4826cdadf1ef: Waiting
09:54:25 3638c4b9c60d: Mounted from harbor/service-b
09:54:26 84b15712ff85: Mounted from harbor/service-c
09:54:26 e7cc650e5dce: Mounted from harbor/service-d
09:54:26 9e18425967c4: Mounted from harbor/service-e
09:54:26 3fc9cda50b8a: Mounted from harbor/service-f
09:54:26 3c0f64681754: Pushed
09:54:26 4826cdadf1ef: Mounted from harbor/service-g
09:54:39 3d8557da29c3: Pushed
09:54:41 77eb678f7147737a10141ef61c1de16b4955190c: digest: sha256:ca041c91a091f2c543855eb8fe608722a3fa953e6781189e2b77b1fe98c66051 size: 2004
通俗解释
-
我们知道镜像打包都是分层次打包的,服务第一次打包会去下载Dockerfile中定义的基础镜像,比如
jdk:1.8.13
,如果内容大的话耗时会比较长。 -
当其他服务也用到的是
jdk:1.8.13
这个镜像作为基础镜像时,docker会检查本地存不存在,如已存在了就不会再下载了,这是docker定义好的策略,既节省空间又节省时间 -
虽然各服务间没有联系,但是各服务用到依赖可能是一样的,比如java服务,就可能用的是同一个依赖jar包,所以服务a打包完了,去推包时docker也会检查harbor是否已存在依赖jar包。
-
所以同样的策略也存在于仓库harbor,当发现仓库已经存在了相同的“层”(比如依赖jar包),我们执行
docker push
时将会跳过上传此层的过程,反之docker告诉我们该层harbor已经存在了,并且返回给你存在的信息,也就是3fc9cda50b8a: Mounted from harbor/service-f
,‘3fc9cda50b8a’代表该层的hash值,‘harbor/service-f’ 代码目录位置
明白了吗?同样的策略既节省了harbor空间又节省推包的时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言