docker中,对于各个镜像和我物理机的关系的一些疑问


最近在学docker,我们知道,docker中有各种镜像,比如ubuntu,centos这种操作系统的镜像,还有nginx,redis这样的应用级镜像。我用docker inspect 指令 查看了nginx镜像,发现了这么段内容:

"Architecture": "amd64",
"Os": "linux",
"Size": 108664124,
"VirtualSize": 108664124,

首先声明一下我是mac。
那这个 "Os": "linux",是我物理机的系统内核吗?
如果是,那nginx镜像共用了我的物理机的系统内核,那么问题来了,像ubuntu,centos这种操作系统的镜像,它们镜像里面是不是包含了自己的linux内核?还是怎么说?
已邀请:

庆祝亚运会

赞同来自: ddxx33221


简单的说,是的。每个镜像都有自己的linux内核,不过,如果它们依赖相同的基础镜像,比如linux,是可以共用的。相当于你搭积木,下面的一个大块是操作系统,上面的小积木应用A和B,比如AB都是依赖于CentOS,那么它们就是公用一个CentOS。

庆祝亚运会

赞同来自: ddxx33221


@ddxx33221 镜像与宿主机的系统无关,例如你下载nginx镜像的alpine版本,然后下载redis的alpine版本,它们镜像里都自带了alpine linux系统,pull的时候就不会重复下载alpine linux,只会下载一次,它们两个镜像共用。所以你的多个微服务的镜像尽量使用一个相同版本的基础镜像(相同linux的相同版本),这样都公用一个基础镜像。

庆祝亚运会

赞同来自:


@ddxx33221 存储方面是公用的,当你pull相同centos作为基础镜像的镜像时,你会发现只有第一次才会pull centos,后面都是mount from之前pull的centos。

庆祝亚运会

赞同来自:


@ddxx33221 镜像显示大小和实际存储结构是不一样的

要回复问题请先登录注册