自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

還在用Alpine做Docker鏡像?看看大牛怎么說

開發(fā)
在 SumUp我們經(jīng)常使用Kubernetes和Docker鏡像,所以我們一直在尋找基礎(chǔ)鏡像的最佳選擇。distroless鏡像并不是什么新東西,但由于某些原因,我覺得它們并沒有得到應(yīng)有的采納。

大家都喜歡Alpine的鏡像,因為它們很輕,攻擊面較小,但也許它們不再是最佳選擇?,F(xiàn)在又到了談?wù)揹istroless版鏡像的時候了。

在 SumUp我們經(jīng)常使用Kubernetes和Docker鏡像,所以我們一直在尋找基礎(chǔ)鏡像的最佳選擇。distroless鏡像并不是什么新東西,但由于某些原因,我覺得它們并沒有得到應(yīng)有的采納。

什么是distroless圖像?

我不得不說這不是什么新東西,我是說真的。它已經(jīng)存在很多年了,你可以在以下內(nèi)容中查看 GoogleContainerTools/distroless:

"distroless無發(fā)行版 "只包含你的應(yīng)用程序和它的運行時依賴。它們不包含軟件包管理器、外殼或任何其他你期望在標(biāo)準(zhǔn)Linux發(fā)行版中找到的程序。

這足以理解你的容器不會有任何東西,但你正在使用的東西。

我為什么要使用它們?

現(xiàn)在每個人都有一個CI和CD管道,但有時需要花費很長時間來構(gòu)建、推送和拉動鏡像。無發(fā)行版的鏡像更輕,這意味著拉動和推送更快。

distroless鏡像不一定會讓你的構(gòu)建步驟更快,但它們會改善拉取和推送的時間。Docker提供了一個最小當(dāng)你使用它作為鏡像的基礎(chǔ)時,它不會創(chuàng)建額外的層。更少的層等于更快的下載和上傳。

更快的管道意味著對開發(fā)人員的反饋更快,花費的CI時間更少,這在你使用像.NET這樣的工具時非常重要。

安全也是一個重要的問題,因為你應(yīng)該盡可能地減少你的攻擊面。如果你不打算使用像sudo或ping這樣的工具,你就不應(yīng)該在你的容器中設(shè)置這些工具。

如果你的代碼有漏洞,你就不太容易受到導(dǎo)致shell的RCE的影響,但RCE仍然在發(fā)生。

- 埃里克-杜蘭

應(yīng)始終避免使用幫助惡意行為者收集更多信息或執(zhí)行特權(quán)升級的工具。你應(yīng)該看一下 erickduran/docker-distroless-pocREADME。

不應(yīng)該使用distroless的場景

說什么時候使用distroless很容易,但什么時候不應(yīng)該使用它們?

如果你想在容器內(nèi)調(diào)試你的應(yīng)用程序,你可以從shell和其他一些安裝的工具中獲益,但distroless沒有這些工具。顯而易見的答案是使用正常的鏡像進行開發(fā),而將無發(fā)行版保留給生產(chǎn)。

在開發(fā)中使用不同的圖像使開發(fā)人員遠(yuǎn)離真實的生產(chǎn)環(huán)境,這并不理想,但在你的CI管道中創(chuàng)建測試步驟,使用與生產(chǎn)中相同的環(huán)境,應(yīng)該可以解決這個問題。對這種權(quán)衡要小心。

那就舉個例子吧?

儲存庫 GoogleContainerTools/distroless有一個關(guān)于如何為Golang工具制作無發(fā)行版distroless鏡像的例子。

這是一個簡單易行的例子,主要是因為Golang產(chǎn)生的二進制文件默認(rèn)沒有運行時的依賴性。

相反,讓我們假設(shè)我們需要創(chuàng)建一個distroless的鏡像來使用ping二進制,因為我們將在我們的一個服務(wù)中使用它來檢查一個主機是否正常。這意味著我們需要找到所有的運行時依賴項,但我將盡可能地保持簡單。

我在Ubuntu中運行了ldd命令,它向我們顯示了它的依賴性,所以我開發(fā)了以下Dockerfile。另外,請注意,并不是每個運行時的依賴都在ldd命令的輸出中,我不得不使用其他方法來發(fā)現(xiàn)它們。

然而,這并不是最聰明的解決方案。上面的Docker文件創(chuàng)建了一個5.44MB的鏡像,我們可以通過使用Alpine而不是Ubuntu來改進它。如果你在Alpine環(huán)境中運行同樣的ldd命令,你也會有更少更輕的依賴性。

它運行良好,只用了1.43MB,比Alpine圖像和我們在第一階段使用Ubuntu建立的鏡像少了約74%的空間。

總結(jié)

標(biāo)題說你應(yīng)該停止使用Alpine,但我想我向你表明,這只是在正確場合做正確選擇的問題。另外,alpine和 scratch創(chuàng)造出令人驚奇的distroless。

問題是,為你的應(yīng)用程序建立distroless仍然是相當(dāng)手動的,并不像你希望的那樣有趣。由于它需要開發(fā)人員付出更大的努力,所以通常被拋在后面,而支持著名的Alpine鏡像。

我認(rèn)為我們的想法是在生產(chǎn)環(huán)境中以及在進行手動和自動測試時使用distroless。你不想讓開發(fā)人員在調(diào)試應(yīng)用程序時承受更大的壓力。

我希望社區(qū)給予distroless應(yīng)有的關(guān)注,這將導(dǎo)致更多的改進,比如盡可能地自動創(chuàng)建鏡像。

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2021-02-04 14:24:25

5G網(wǎng)絡(luò)運營商

2019-10-31 15:45:25

Java薪酬語言

2020-11-23 10:40:08

比特幣加密貨幣區(qū)塊鏈

2024-06-03 00:00:06

高性能數(shù)據(jù)傳輸應(yīng)用程序

2020-11-24 06:00:55

PythonPython之父編程語言

2023-07-07 08:15:18

JavaPython編寫

2019-01-09 08:42:18

2018-04-03 14:03:28

2012-06-12 10:07:22

Web

2017-12-26 00:31:04

2018-06-24 09:12:33

redismemcache源碼

2021-01-31 18:58:31

redismemcache源碼

2021-12-06 17:44:56

MHAMySQL高可用

2015-11-03 14:45:58

2018-01-05 10:48:54

混合云尚陽科技IDC

2018-12-19 09:15:36

SDN軟件定義網(wǎng)絡(luò)廣域網(wǎng)

2024-10-11 16:34:22

2018-10-30 09:56:31

IBM紅帽收購

2014-12-17 09:48:49

Apple Pay蘋果
點贊
收藏

51CTO技術(shù)棧公眾號