請問:
如果docker的宿主系统是centos,为什么可以运行ubuntu的镜像呢?
看了docker的介绍后,俺的理解是:镜像系统复用了宿主系统, ubuntu和centos在很多地方还是有很大区别的,
如果宿主系统是centos6.0,镜像系统也是centos6.0, 感觉就很好理解了。
求高人解答!感谢!
PHP中文网2017-04-24 09:15:25
首先需要區分Linux內核與Linux發行版
Linux核心是Linux作業系統的核心, 負責硬體管理, 例如管理記憶體、管理磁碟(檔案系統)、管理CPU(進程)等等...
Linux發行版是在Linux內核的基礎上添加了一些工具軟體,比如圖形介面、函數庫、軟體包管理系統等等...
CentOS與Ubuntu是不同的Linux發行版, 它們都是基於Linux內核, 只是添加的工具軟體不同。例如, 他們的軟體包管理系統不同, CentOS使用yum指令安裝軟體, 而Ubuntu使用apt-get指令安裝軟體。
因此CentOS與Ubuntu的核心是相同的(版本可能不同), 只是所安裝的軟體不同, 即檔案系統不同。
Docker容器技術是基於Linux核心實現的, 它主要用到了兩個核心模組:
Namespace: 用於容器的隔離, 例如PID Namespace使得容器中的程序無法感知宿主機器以及其他容器中的進程。
Cgroups: 用於容器的資源控制, 例如限制容器所使用的記憶體大小或CPU個數。
在CentOS上運行基於Ubuntu鏡像的容器時, 容器使用了CentOS主機的核心以及Ubuntu鏡像, Ubuntu鏡像中安裝了Ubuntu的各種軟體(apt-get)。