base 映象有兩層含義:
不依賴其他映象,從 scratch 構建。
其他映象可以之為基礎進行擴充套件。
所以,能稱作 base 映象的通常都是各種 linux 發行版的 docker 映象,比如 ubuntu, debian, centos 等。
檢視映象資訊:
映象大小不到 200mb。
等一下!
乙個 centos 才 200mb ?
平時我們安裝乙個 centos 至少都有幾個 gb,怎麼可能才 200mb !
相信這是幾乎所有 docker 初學者都會有的疑問,包括我自己。下面我們來解釋這個問題。
linux 作業系統由核心空間和使用者空間組成。如下圖所示:
rootfs
核心空間是 kernel,linux 剛啟動時會載入 bootfs 檔案系統,之後 bootfs 會被解除安裝掉。
使用者空間的檔案系統是 rootfs,包含我們熟悉的 /dev, /proc, /bin 等目錄。
對於 base 映象來說,底層直接用 host 的 kernel,自己只需要提供 rootfs 就行了。
而對於乙個精簡的 os,rootfs 可以很小,只需要包括最基本的命令、工具和程式庫就可以了。相比其他 linux 發行版,centos 的 rootfs 已經算臃腫的了,alpine 還不到 10mb。
我們平時安裝的 centos 除了 rootfs 還會選裝很多軟體、服務、圖形桌面等,需要好幾個 gb 就不足為奇了。
base 映象提供的是最小安裝的 linux 發行版。
下面是 centos 映象的 dockerfile 的內容:
第二行 add 指令新增到映象的 tar 包就是 centos 7 的 rootfs。在製作映象時,這個 tar 包會自動解壓到 / 目錄下,生成 /dev, /proc, /bin 等目錄。
注:可在 docker hub 的映象描述頁面中檢視 dockerfile 。
支援執行多種 linux os
不同 linux 發行版的區別主要就是 rootfs。
比如 ubuntu 14.04 使用 upstart 管理服務,apt 管理軟體包;而 centos 7 使用 systemd 和 yum。這些都是使用者空間上的區別,linux kernel 差別不大。
所以 docker 可以同時支援多種 linux 映象,模擬出多種作業系統環境。
上圖 debian 和 busybox(一種嵌入式 linux)上層提供各自的 rootfs,底層共用 docker host 的 kernel。
這裡需要說明的是:
base 映象只是在使用者空間與發行版一致,kernel 版本與發行版是不同的。
例如 centos 7 使用 3.x.x 的 kernel,如果 docker host 是 ubuntu 16.04(比如我們的實驗環境),那麼在 centos 容器中使用的實際是是 host 4.x.x 的 kernel。
① host kernel 為 4.4.0-31
② 啟動並進入 centos 容器
③ 驗證容器是 centos 7
④ 容器的 kernel 版本與 host 一致
容器只能使用 host 的 kernel,並且不能修改。
所有容器都共用 host 的 kernel,在容器中沒辦法對 kernel 公升級。如果容器對 kernel 版本有要求(比如應用只能在某個 kernel 版本下執行),則不建議用容器,這種場景虛擬機器可能更合適。
**
docker映象指定安裝源 docker映象源修改
docker映象源修改 利用 docker toolbox 來安裝windows docker 使用 docker run 命令來在容器內執行乙個應用程式。輸出hello world runoob runoob docker run ubuntu 15.10 bin echo hello world...
docker 筆記 2 base映象
base 映象有兩層含義 不依賴其他映象,從 scratch 構建。其他映象可以之為基礎進行擴充套件。所以,能稱作 base 映象的通常都是各種 linux 發行版的 docker 映象,比如 ubuntu,debian,centos 等。linux 作業系統由核心空間和使用者空間組成。如下圖所示 ...
pandas映象安裝 Docker安裝與映象命令
docker安裝 第一步 yum 包更新到最新 sudo yum update 第二步 安裝需要的軟體包 第三步 設定yum源為阿里雲 sudo yum config manager add repo 第四步 安裝docker sudo yum install docker ce 第五步 安裝後檢視...