<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          推薦一個(gè)極其輕量級(jí)的 Docker 基礎(chǔ)鏡像,大小 2MB

          共 1562字,需瀏覽 4分鐘

           ·

          2022-05-16 15:37

          你好,我是征哥,提到輕量級(jí)的 Docker 鏡像,很多人都知道 Alpine,因?yàn)樗_實(shí)很輕,只有 5.57MB,使用它作為基礎(chǔ)鏡像的 Python 也就 44MB。

          但它依然不是最輕量級(jí)的,今天要說的是 Google 的 distroless 基礎(chǔ)鏡像,distroless 鏡像 gcr.io/distroless/static-debian11 只有 2 MB,是 Alpine 的一半,你可以在這里https://github.com/GoogleContainerTools/distroless 找到它,12.7k 的 Star。

          distroless 映像僅包含應(yīng)用程序及其運(yùn)行時(shí)依賴項(xiàng),它不包含包管理器、shell、Linux 發(fā)行版的任何其他程序。這樣的好處就是輕,推送,拉取的速度都非常快,也更安全。

          什么情況應(yīng)該使用 distroless?

          現(xiàn)在基本上每個(gè)程序員都有自己的持續(xù)集成(CI)和持續(xù)發(fā)布( CD) 工作流,比如說,我部署自己的應(yīng)用,為了減少在服務(wù)器上的配置工作,我就把應(yīng)用放在 Docker,然后服務(wù)器拉取運(yùn)行就可以。但有時(shí)構(gòu)建、推送和拉取鏡像需要很長(zhǎng)時(shí)間,為了減少拉取,于是我不得不把 Docker 容器映射到服務(wù)器的磁盤,然后再上傳修改的代碼,在 Docker 容器內(nèi)安裝依賴,活活把 Docker 用成了虛擬機(jī),最后換服務(wù)器的時(shí)候,又是一堆事情重復(fù)做一遍。

          distroless 鏡像更輕,這意味著更快的拉取和推送。Docker 提供了一個(gè)超級(jí)最小的鏡像,當(dāng)你使用它作為鏡像的基礎(chǔ)時(shí),它不會(huì)創(chuàng)建額外的層。更少的層等于更快的下載和上傳。更快的工作流意味著對(duì)開發(fā)人員的反饋更快,花費(fèi)的 CI 分鐘數(shù)更少。

          安全性也是一個(gè)重要問題,如果不打算使用 sudo、ping、ls 之類的工具,容器中也不應(yīng)該使用它們,比如說你的應(yīng)用很容易受到攻擊,但是你應(yīng)用運(yùn)行的環(huán)境沒有 ls 或 sudo 這樣的工具,黑客也很難進(jìn)行信息收集和命令執(zhí)行。

          這里有一個(gè)實(shí)驗(yàn)[1],分別用常規(guī)的容器和 distroless 部署一個(gè)有漏洞的 flask app。

          常規(guī)的容器部署的可以進(jìn)行命令執(zhí)行:

          而 distroless 部署的就沒有:

          原因是 distroless 沒有 ls 命令:

          也就是說應(yīng)始終避免使用那些幫助黑客收集更多信息或執(zhí)行權(quán)限提升的工具。

          因此,如果注重推拉取鏡像的速度和容器的安全性,或者用于生產(chǎn)環(huán)境,可以用 distroless。

          什么情況應(yīng)該不使用 distroless?

          如果你想在容器內(nèi)調(diào)試你程序,你需要 shell 和其他一些已安裝的工具,但 distroless 沒有這些,這時(shí)使用普通鏡像進(jìn)行開發(fā)。

          distroless 用于 Python 應(yīng)用的例子

          Dockerfile:

          FROM?python:3-slim?AS?build-env
          COPY?.?/app
          WORKDIR?/app

          FROM?gcr.io/distroless/python3
          COPY?--from=build-env?/app?/app
          WORKDIR?/app
          CMD?["hello.py",?"/etc"]

          最后的話

          不過,distroless 需要開發(fā)人員付出更大的努力,不過只要你的 app 被更多的拉取,那節(jié)省出來的時(shí)間以及帶來的安全性,這都是值得的,讓我們持續(xù)關(guān)注 distroless。如果覺得有幫助,還請(qǐng)點(diǎn)贊、轉(zhuǎn)發(fā)、在看,感謝支持。也歡迎留言討論

          推薦閱讀:

          12 分鐘上手 Docker Compose

          12 分鐘上手 Docker

          手摸手,帶你入門docker

          參考資料

          [1]

          實(shí)驗(yàn): https://github.com/erickduran/docker-distroless-poc


          瀏覽 122
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩无码成人AV | GOGO大胆无码人体免费视频 | 国产免费黄色小视频 | chaopeng97 | 国产免费自拍 |