03 Docker镜像详解
Docker镜像详解
什么是镜像
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需要的所有内容,包括代码,运行时(一个程序在运行或者在被执行的依赖)、库,环境变量和配置文件。
Docker镜像加载原理
Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统是UnionFS联合文件系统。
分层理解
分层的镜像
我们去下载一个镜像,观察下方的日志输出,可以看到一层一层的在下载
[root@vdevops ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
e5ae68f74026: Already exists
37c4354629da: Pull complete
b065b1b1fa0f: Pull complete
6954d19bb2e5: Pull complete
6333f8baaf7c: Pull complete
f9772c8a44e7: Pull complete
Digest: sha256:2f502d27c3e9b54295f1c591b3970340d02f8a5824402c8179dcd20d4076b796
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
为啥 镜像要采用这种分层结构
最大的好处,莫过于资源共享,比如有多个镜像都从相同的Base镜像构建而来,那么宿主机只需在磁盘上保留一份base镜像,同时内存中只需要加载一份base镜像,这样就可以为所有的容器服务,而且镜像的每一层都可以被共享。查看镜像分层的方式可以通过 docker image inspect
commit 镜像
如何提交自己的一个镜像
docker commit 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名: [TAG]
#1.启动一个默认的tomcat
#2. 发现这个默认的 tomcat 是没有webapps 应用的 官方的镜像默认 webapps下面是没有文件的
#3.自己拷贝
#4. 将操作后的容器 通过 commit 提交 我们以后就是要修改过的镜像
[root@vdevops ~]# docker commit -a="syyy" -m="add webapps app" a5538129234d tomcat1.0
sha256:c6e64ee3642d487261c131892dd668fffd484600b3464ff378bde1547dff89ea
[root@vdevops ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat1.0 latest c6e64ee3642d 7 seconds ago 684MB
tomcat 9.0 3f3cadde9a68 12 days ago 680MB
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)