Docker: 简要分析内核问题

Q:接触docker不久,从一个底层问题引发的思考:

  1. Linux宿主机能否运行不同Linux发行版本的image?
  2. Linux宿主机能否运行不同Linux内核版本的image?

A:

  1. 可以的. 只要满足条件: CPU架构一致内核版本兼容 即可。
  2. 不一定. 一般的上层软件没有问题,如果是偏嵌入式底层的软件,可能会因为内核版本不一致而导致运行出问题。

以下是知识点记录:

区分Linux内核与Linux发行版

  • Linux内核是Linux操作系统的核心, 负责硬件管理, 比如管理内存、管理磁盘(文件系统)、管理CPU(进程)等等..
  • Linux发行版是在Linux内核的基础上添加了一些工具软件,比如图形界面、函数库、软件包管理系统等等..

Docker的技术本质 -- "内核的引擎"

基于Linux内核的技术,依赖操作系统内核的引擎,根据操作系统来部署。

它主要用到了两个内核模块:

  • Namespace: 用于容器的隔离, 例如PID Namespace使得容器中的进程无法感知宿主机以及其他容器中的进程。
  • Cgroups: 用于容器的资源控制, 比如限制容器所使用的内存大小或者CPU个数。

由此引出image使用界限,解答笔记开头描述的问题:

  • 不同操作系统族的镜像不能共用,Docker镜像是操作系统族相关的。
  • 不同CPU架构的image不能共用,如X86和ARM的镜像不能共用。
posted @ 2020-12-09 15:02  kumata  阅读(548)  评论(0编辑  收藏  举报