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

posted @   flypiggg  阅读(89)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示