03 Docker镜像详解

Docker镜像详解

什么是镜像

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

Docker镜像加载原理

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统是UnionFS联合文件系统。
03 Docker镜像详解
03 Docker镜像详解

分层理解

分层的镜像

我们去下载一个镜像,观察下方的日志输出,可以看到一层一层的在下载

[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
03 Docker镜像详解
03 Docker镜像详解
03 Docker镜像详解
03 Docker镜像详解

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

上一篇:检测DMA传输是否完成的4种方法


下一篇:12-07