第 3 章 镜像 - 010 - base 镜像
base 鏡像有兩層含義:
能稱作 base 鏡像的通常都是各種 Linux 發(fā)行版的 Docker 鏡像,比如 Ubuntu, Debian, CentOS 等。
以 CentOS 為例考察 base 鏡像包含哪些內(nèi)容。
?
Linux 操作系統(tǒng)由內(nèi)核空間和用戶空間組成。如下圖所示:
?
rootfs
內(nèi)核空間是 kernel,Linux 剛啟動時會加載 bootfs 文件系統(tǒng),之后 bootfs 會被卸載掉。
用戶空間的文件系統(tǒng)是 rootfs,包含我們熟悉的 /dev, /proc, /bin 等目錄。
對于 base 鏡像來說,底層直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。
而對于一個精簡的 OS,rootfs 可以很小,只需要包括最基本的命令、工具和程序庫就可以了。
?
base 鏡像提供的是最小安裝的 Linux 發(fā)行版。
CentOS 鏡像的 Dockerfile 的內(nèi)容:
1 FROM scratch 2 ADD centos-7-docker.tar.xz / 3 CMD ["/bin/bash"]?第二行 ADD 指令添加到鏡像的 tar 包就是 CentOS 7 的 rootfs。在制作鏡像時,這個 tar 包會自動解壓到 / 目錄下,生成 /dev, /porc, /bin 等目錄。
?Docker Hub 的鏡像描述頁面中查看 Dockerfile 。
?
支持運(yùn)行多種 Linux OS
不同 Linux 發(fā)行版的區(qū)別主要就是 rootfs。
比如 Ubuntu 14.04 使用 upstart 管理服務(wù),apt 管理軟件包;而 CentOS 7 使用 systemd 和 yum。這些都是用戶空間上的區(qū)別,Linux kernel 差別不大。
所以 Docker 可以同時支持多種 Linux 鏡像,模擬出多種操作系統(tǒng)環(huán)境。
上圖 Debian 和 BusyBox(一種嵌入式 Linux)上層提供各自的 rootfs,底層共用 Docker Host 的 kernel。
?
base 鏡像只是在用戶空間與發(fā)行版一致,kernel 版本與發(fā)型版是不同的。
?
小結(jié)
- 容器只能使用 Host 的 kernel,并且不能修改。
- 所有容器都共用 Host 的 kernel,在容器中沒辦法對 kernel 升級。
- 如果容器對 kernel 版本有要求(比如應(yīng)用只能在某個 kernel 版本下運(yùn)行),則不建議用容器,這種場景虛擬機(jī)可能更合適。
?
?
------------------引用來自------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587585&idx=1&sn=bcba35750ffe83aa31db0bfe1ffd43dd&chksm=8d308098ba47098e666fa7eb83c11a266c658267aee656231a7e47eb5caf0459e3ceafae65f4&scene=21#wechat_redirect
轉(zhuǎn)載于:https://www.cnblogs.com/gsophy/p/10179740.html
總結(jié)
以上是生活随笔為你收集整理的第 3 章 镜像 - 010 - base 镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES6 - let、const与作用
- 下一篇: Spring JPA 开启原生sql打印