当前位置:首页 > 经验 >

docker容器和镜像什么意思(docker镜像和容器怎么用)

来源:原点资讯(www.yd166.com)时间:2022-11-09 07:57:05作者:YD166手机阅读>>

从结果可以看出除了上一个阶段中已经有的base、deviceset-metadata等几个文件外,还多出了一些名字较长的文件,我们挨个看下这几个文件中的数据:

[root@localhost metadata]# cat base

{"device_id":1,"size":107374182400,"transaction_id":1,"initialized":true} [root@localhost metadata]# cat 22f3bf58cd0949b57df2dc161e7026a8cc77699b6a8be7d0e3085e252a5439c3

{"device_id":2,"size":107374182400,"transaction_id":2,"initialized":false}

[root@localhost metadata]# cat ea2fc476f5f055f9e44963987903ecfe0cb480b7e387d8b5cb64006832110afc

{"device_id":3,"size":107374182400,"transaction_id":3,"initialized":false}

[root@localhost metadata]# cat 81d728438afe98602e2e692c20299ecf41b93173fb12351c1b59820b17fb16b9

{"device_id":4,"size":107374182400,"transaction_id":4,"initialized":false} [root@localhost metadata]# cat d43816b44a2280148da8d9b6ce2f357bff9b2e59ef386181f36a4a433a9aad6c

{"device_id":6,"size":107374182400,"transaction_id":6,"initialized":false} [root@localhost metadata]# cat 303a6dec11900c97f5d7555d31adec02d2e5e4eaa1a77537e7a5ebd45bb7fcd2

{"device_id":5,"size":107374182400,"transaction_id":5,"initialized":false} [root@localhost metadata]# cat a634e96a9de9f1e280efaecdd43c7273ac43e109a42ab6c76ab2d2261c8cdc50

{"device_id":9,"size":107374182400,"transaction_id":9,"initialized":false} [root@localhost metadata]# cat dc02db50a25a87ca227492197721e97d19f1822701fe3ec73533a0811a6393a7

{"device_id":7,"size":107374182400,"transaction_id":7,"initialized":false} [root@localhost metadata]# cat 6f650a34b3083c96cf8b7babc7a391227c0f78e0d07067071c46e31bd834de3a

{"device_id":8,"size":107374182400,"transaction_id":8,"initialized":false} [root@localhost metadata]# cat 72f3ebe1e4d793a50836d4e070c94ef7497c80111d178e867014981f64696a39

{"device_id":10,"size":107374182400,"transaction_id":10,"initialized":false} [root@localhost metadata]# cat c2c9e418b22ca5a0b02ef0c2bd02c34ad792d1fc271e5580fdb3252979ccc092

{"device_id":11,"size":107374182400,"transaction_id":11,"initialized":false}

从上面的结果可以看出上面的几个文件中的device_id数值是按照顺序排列下来的,换句话说就是除了上一个阶段中已经存在的base文件,上面结果中其他的几个文件都是nginx镜像的中间镜像层,也就是我们经常执行的命令docker images –a 的结果中看到的构成当前镜像的各个镜像层。

接下来我们再看一个变化较大的文件/var/lib/docker/graph。

[root@localhost graph]# tree .

.

├── 22f3bf58cd0949b57df2dc161e7026a8cc77699b6a8be7d0e3085e252a5439c3

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── 303a6dec11900c97f5d7555d31adec02d2e5e4eaa1a77537e7a5ebd45bb7fcd2

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── 6f650a34b3083c96cf8b7babc7a391227c0f78e0d07067071c46e31bd834de3a

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── 72f3ebe1e4d793a50836d4e070c94ef7497c80111d178e867014981f64696a39

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── 81d728438afe98602e2e692c20299ecf41b93173fb12351c1b59820b17fb16b9

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── a634e96a9de9f1e280efaecdd43c7273ac43e109a42ab6c76ab2d2261c8cdc50

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── c2c9e418b22ca5a0b02ef0c2bd02c34ad792d1fc271e5580fdb3252979ccc092

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── d43816b44a2280148da8d9b6ce2f357bff9b2e59ef386181f36a4a433a9aad6c

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── dc02db50a25a87ca227492197721e97d19f1822701fe3ec73533a0811a6393a7

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

├── ea2fc476f5f055f9e44963987903ecfe0cb480b7e387d8b5cb64006832110afc

│ ├── checksum

│ ├── json

│ ├── layersize

│ ├── tar-data.json.gz

│ └── v1Compatibility

└── _tmp

11 directories, 50 files

从上面的结果中可以很明显的看到我们的镜像nginx及其每一个nginx镜像的中间层对应的目录下都包含如下几个文件:checksum、json、layerrize、tar-data.json.gz和v1Compatibility。我们任意找一个文件看下这几个文件中存放了什么数据。

(1) Checksum

docker容器和镜像什么意思,docker镜像和容器怎么用(5)

其实从文件名称即可看出每个镜像层中的checksum文件存放的是当前镜像层的md5值,用于核对当前镜像层的数据是否完整。

(2) json

docker容器和镜像什么意思,docker镜像和容器怎么用(6)

从cat 的结果中可以看出json文件中存放的数据较多,比如Hostname、Domainname、User、Image等信息,而且很多参数和我们经常接触的Dockerfile中的参数相似。相比较前面的checksum文件这个文件中的内容相对较复杂,在此我们也解释下。

此处的json文件中一般主要用于存放镜像中涉及的动态信息,但需要注意的是此处的json文件并不仅仅被用于存储docker镜像的动态信息(很多同学可能会认为此处的json文件只是被用来描述Docker容器的动态信息的),我们在使用Dockerfile 构建镜像时,Dockerfile 构建过程中涉及到的所有操作基本都被记录到这个json文件中。

说到这儿,有些同学可能会问这个json是在什么阶段被使用到的,好问题。通过下面这个图我想大家应该就能看明白了:

docker容器和镜像什么意思,docker镜像和容器怎么用(7)

从图中我们可以看出每个镜像层的json文件其实是由Docker 守护进程进行解析的。Docker 守护进程通过json文件可以解析出运行容器需要的各种数据,比如环境变量、workdir以及容器启动时需要执行的ENTRYPOINT或者CMD命令等。Docker 守护进程从json文件中获取到这些数据后,接下来就开始进行容器进程的初始化。

(3) layersize

从文件名称即可看出,这个文件中存放的为当前镜像层的占用空间大小:

docker容器和镜像什么意思,docker镜像和容器怎么用(8)

栏目热文

容器docker怎么理解(docker容器技术的理解)

容器docker怎么理解(docker容器技术的理解)

作者 | 乐章来源 | cnblogs.com/zhangxingeng/p/11236968.html一、简介1、了解...

2022-11-09 08:09:17查看全文 >>

docker容器是解决什么的(docker容器缺点)

docker容器是解决什么的(docker容器缺点)

现代软件开发的目标之一是应用程序既能运行在同一主机或集群上,又能彼此隔离,这样它们就不会过度干扰彼此的操作或维护,但由于...

2022-11-09 08:01:54查看全文 >>

docker容器基本概念(docker容器技术基本知识点)

docker容器基本概念(docker容器技术基本知识点)

自学了几天DDocker,就干脆总结一下,也顺带增加一篇《30分钟入门系列》。网上能够查到的对于Docker的定义我就不...

2022-11-09 07:58:30查看全文 >>

容器docker缺点(docker容器云缺点)

容器docker缺点(docker容器云缺点)

在实际的软件开发过程中,我们需要多的环境:如开发环境、测试环境、沙箱环境、自动化环境、预发环境、生产环境……这么多的环境...

2022-11-09 07:28:34查看全文 >>

容器docker怎么用(docker容器介绍)

容器docker怎么用(docker容器介绍)

一.什么是docker?百度百科:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移...

2022-11-09 07:53:42查看全文 >>

docker容器含义(docker容器开发是啥)

docker容器含义(docker容器开发是啥)

在容器技术没有出来之前,开发运维在进行交付的时候经常出现,开发环境执行正常,生产环境部署运行出现问题,很多原因就是因为环...

2022-11-09 07:59:29查看全文 >>

docker容器干嘛用(docker容器使用缺点)

docker容器干嘛用(docker容器使用缺点)

Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注Docker是什么?Docker是一个...

2022-11-09 07:50:25查看全文 >>

docker与容器的关系(docker中的镜像和容器是什么)

docker与容器的关系(docker中的镜像和容器是什么)

容器化是解决传统虚拟化带来的障碍的解决方案。自问世以来,虚拟机(VM)使公司能够做到事半功倍。单个物理设备可以通过虚拟机...

2022-11-09 07:54:20查看全文 >>

docker容器技术的特点有哪些(docker容器化有什么用)

docker容器技术的特点有哪些(docker容器化有什么用)

什么是容器? 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的...

2022-11-09 08:14:53查看全文 >>

docker容器用来干嘛的(容器docker 能干什么)

docker容器用来干嘛的(容器docker 能干什么)

简介 如果要用一句话概括Docker是什么,那么可以说【Docker是一个轻量级的,可以将应用程序及其依赖打包到容器中的...

2022-11-09 07:57:02查看全文 >>

文档排行