docker镜像之base镜像

1、base镜像的特性是什么?

1、不依赖其他镜像,从 scratch 构建。
2、其他镜像可以之为基础进行扩展。
能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ubuntu, Debian, CentOS 等

2、docker cnetos的镜像大小200多M,和平时的所用的发行版的大小(几G)相差很大,为什么?

Linux 操作系统由内核空间和用户空间组成
内核空间是 kernel,Linux 刚启动时会加载 bootfs 文件系统,之后 bootfs 会被卸载掉。
用户空间的文件系统是 rootfs,包含我们熟悉的 /dev, /proc, /bin 等目录。
对于 base 镜像来说,底层直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。
而对于一个精简的 OS,rootfs 可以很小,只需要包括最基本的命令、工具和程序库就可以了。相比其他 Linux 发行版,CentOS 的 rootfs 已经算臃肿的了,alpine 还不到 10MB。
我们平时安装的 CentOS 除了 rootfs 还会选装很多软件、服务、图形桌面等,需要好几个 GB 就不足为奇了。
base 镜像提供的是最小安装的 Linux 发行版。

3、为什么可以支持运行多种Linux OS?

不同 Linux 发行版的区别主要就是 rootfs。
比如 Ubuntu 14.04 使用 upstart 管理服务,apt 管理软件包;而 CentOS 7 使用 systemd 和 yum。这些都是用户空间上的区别,Linux kernel 差别不大。
所以 Docker 可以同时支持多种 Linux 镜像,模拟出多种操作系统环境。

4、容器的base镜像的的用户空间的版本和kernel版本为啥不同?

base 镜像只是在用户空间与发行版一致,kernel 版本与发型版是不同的。
容器只能使用 Host 的 kernel,并且不能修改。
docker镜像之base镜像

5、什么场景下不适合用容器?

所有容器都共用 host 的 kernel,在容器中没办法对 kernel 升级。如果容器对 kernel 版本有要求(比如应用只能在某个 kernel 版本下运行),则不建议用容器,这种场景虚拟机可能更合适。

6、如何启动并进行centos容器?

sudo docker run -it centos

上一篇:HDU 4352 XHXJ's LIS


下一篇:Docker 原理剖析(三)rootfs