日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

base 镜像 - 每天5分钟玩转容器技术(10)

發(fā)布時(shí)間:2023/12/31 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 base 镜像 - 每天5分钟玩转容器技术(10) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

上一節(jié)我們介紹了最小的 Docker 鏡像,本節(jié)討論 base 鏡像。

base 鏡像有兩層含義:

  • 不依賴其他鏡像,從 scratch 構(gòu)建。

  • 其他鏡像可以之為基礎(chǔ)進(jìn)行擴(kuò)展。

  • 所以,能稱作 base 鏡像的通常都是各種 Linux 發(fā)行版的 Docker 鏡像,比如 Ubuntu, Debian, CentOS 等。

    我們以 CentOS 為例考察 base 鏡像包含哪些內(nèi)容。
    下載鏡像:

    docker pull centos

    查看鏡像信息:

    鏡像大小不到 200MB。

    等一下!
    一個(gè) CentOS 才 200MB ?
    平時(shí)我們安裝一個(gè) CentOS 至少都有幾個(gè) GB,怎么可能才 200MB !

    相信這是幾乎所有 Docker 初學(xué)者都會(huì)有的疑問,包括我自己。下面我們來解釋這個(gè)問題。

    Linux 操作系統(tǒng)由內(nèi)核空間和用戶空間組成。如下圖所示:

    rootfs

    內(nèi)核空間是 kernel,Linux 剛啟動(dòng)時(shí)會(huì)加載 bootfs 文件系統(tǒng),之后 bootfs 會(huì)被卸載掉。

    用戶空間的文件系統(tǒng)是 rootfs,包含我們熟悉的 /dev, /proc, /bin 等目錄。

    對(duì)于 base 鏡像來說,底層直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。

    而對(duì)于一個(gè)精簡的 OS,rootfs 可以很小,只需要包括最基本的命令、工具和程序庫就可以了。相比其他 Linux 發(fā)行版,CentOS 的 rootfs 已經(jīng)算臃腫的了,alpine 還不到 10MB。

    我們平時(shí)安裝的 CentOS 除了 rootfs 還會(huì)選裝很多軟件、服務(wù)、圖形桌面等,需要好幾個(gè) GB 就不足為奇了。

    base 鏡像提供的是最小安裝的 Linux 發(fā)行版。

    下面是 CentOS 鏡像的 Dockerfile 的內(nèi)容:

    第二行 ADD 指令添加到鏡像的 tar 包就是 CentOS 7 的 rootfs。在制作鏡像時(shí),這個(gè) tar 包會(huì)自動(dòng)解壓到 / 目錄下,生成 /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 可以同時(shí)支持多種 Linux 鏡像,模擬出多種操作系統(tǒng)環(huán)境。

    上圖 Debian 和 BusyBox(一種嵌入式 Linux)上層提供各自的 rootfs,底層共用 Docker Host 的 kernel。

    這里需要說明的是:

  • base 鏡像只是在用戶空間與發(fā)行版一致,kernel 版本與發(fā)型版是不同的。
    例如 CentOS 7 使用 3.x.x 的 kernel,如果 Docker Host 是 Ubuntu 16.04(比如我們的實(shí)驗(yàn)環(huán)境),那么在 CentOS 容器中使用的實(shí)際是是 Host 4.x.x 的 kernel。?

    ① Host kernel 為 4.4.0-31
    ② 啟動(dòng)并進(jìn)入 CentOS 容器
    ③ 驗(yàn)證容器是 CentOS 7
    ④ 容器的 kernel 版本與 Host 一致

  • 容器只能使用 Host 的 kernel,并且不能修改。
    所有容器都共用 host 的 kernel,在容器中沒辦法對(duì) kernel 升級(jí)。如果容器對(duì) kernel 版本有要求(比如應(yīng)用只能在某個(gè) kernel 版本下運(yùn)行),則不建議用容器,這種場景虛擬機(jī)可能更合適。

  • 下一節(jié)我們討論鏡像的分層結(jié)構(gòu)。

    轉(zhuǎn)載于:https://my.oschina.net/u/2397560/blog/891048

    總結(jié)

    以上是生活随笔為你收集整理的base 镜像 - 每天5分钟玩转容器技术(10)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。