Docker: 简要分析内核问题
Q:接触docker不久,从一个底层问题引发的思考:
- Linux宿主机能否运行不同Linux发行版本的image?
- Linux宿主机能否运行不同Linux内核版本的image?
A:
- 可以的. 只要满足条件:
CPU架构一致
,内核版本兼容
即可。 - 不一定. 一般的上层软件没有问题,如果是偏嵌入式底层的软件,可能会因为内核版本不一致而导致运行出问题。
以下是知识点记录:
区分Linux内核与Linux发行版
- Linux内核是Linux操作系统的核心, 负责硬件管理, 比如管理内存、管理磁盘(文件系统)、管理CPU(进程)等等..
- Linux发行版是在Linux内核的基础上添加了一些工具软件,比如图形界面、函数库、软件包管理系统等等..
Docker的技术本质 -- "内核的引擎"
基于Linux内核的技术,依赖操作系统内核的引擎,根据操作系统来部署。
它主要用到了两个内核模块:
- Namespace: 用于容器的隔离, 例如PID Namespace使得容器中的进程无法感知宿主机以及其他容器中的进程。
- Cgroups: 用于容器的资源控制, 比如限制容器所使用的内存大小或者CPU个数。
由此引出image使用界限
,解答笔记开头描述的问题:
- 不同操作系统族的镜像不能共用,Docker镜像是操作系统族相关的。
- 不同CPU架构的image不能共用,如X86和ARM的镜像不能共用。
Github地址:https://github.com/kumataahh