国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Alpine?Distroless?Busybox?到底誰才是容器鏡像的瑞士軍刀?

開發 前端
大多數情況下,我們構建容器鏡像時選擇的基礎鏡像無外乎是 busybox、alpine 和 google/distroless 這幾種,這幾個基礎鏡像在云原生的世界很吃香,被廣泛應用于各個應用的容器化。

[[421797]]

大多數情況下,我們構建容器鏡像時選擇的基礎鏡像無外乎是 busybox、alpine 和 google/distroless 這幾種,這幾個基礎鏡像在云原生的世界很吃香,被廣泛應用于各個應用的容器化。

那么問題來了,為什么這幾個基礎鏡像如此受歡迎呢?

我們先來看下這幾個基礎鏡像的大?。?/p>

  1. 🐳  → podman image ls  
  2. REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE 
  3. docker.io/library/alpine   latest      14119a10abf4  6 days ago    5.87 MB 
  4. docker.io/library/busybox  latest      42b97d3c2ae9  13 days ago   1.46 MB 
  5. gcr.io/distroless/static   latest      e0851a4aa136  51 years ago  3.06 MB 

可以看到這些鏡像的體積都非常小,幾乎可以忽略不計。

Busybox

先啟動一個 Busybox 容器進去一探究竟:

這個鏡像的大小只有 1.24MB,缺容納了這么多 GNU 命令,麻雀雖小五臟俱全啊,這到底是怎么做到的?

事實上這一切都要歸功于 Multi-Call binary。什么是 Multi-Call binary 呢?

顧名思義,Multi-Call binary 就是多重調用二進制文件,是一個用C語言編寫的程序,它允許多次調用來執行二進制文件。它包含了很多函數,每個執行獨特動作的函數都可以通過一個名字來調用,這個名字同時也是 Multi-Call binary 的一個符號鏈接。Multi-Call binary 最好的應用范例便是 Busybox。

Busybox 里面的函數可以通過兩種方式來調用:

  • busybox ls
  • ls

例如:

Busybox 容器

很明顯,這些不是我們所熟知的 GNU 二進制文件,因為所有的二進制文件都具有相同的屬性,比如大小、日期等。這些都不是獨立的二進制文件,而是 Multi-Call binary 每個調用函數的別名。這個 Multi-Call binary 就叫 Busybox。

遺憾的是,這些 Busybox 命令并不完全等同于 GNU 命令,某些命令的某些參數是無法執行的,相當于閹割版。

Alpine

看完了 Busybox,我們再來看看 Alpine 是怎么做的。

巧了,Alpine 的二進制文件竟然是指向 busybox 二進制文件的,這就很明顯了,Alpine 鏡像的底層使用了 busybox 二進制文件。除此之外,Alpine 還包含了 apk 包管理器和一些額外的可執行文件,所以 Alpine 鏡像的體積才會比 Busybox 大。

Distroless

Distroless 就不用說了,它來自 Google[1]。該鏡像幾乎就是空的,只包含應用程序及其運行時所需的依賴,不包含軟件包管理器、shell 和其他 GNU 二進制文件,當然還包含一些時區配置和部分 ca-certificates。

可以看到這個鏡像中既沒有 shell 也沒有 bash,為了一探究竟,可以先把鏡像保存為 tar 包,然后把 rootfs 解壓出來:

  1. 🐳  → mkdir image 
  2. 🐳  → tar xvf distroless.tar.gz -C image/ 
  3. 16679402dc206c982b5552ab8de7d898547100e5468be29d4f67d393c0eadfdb.tar 
  4. e0851a4aa13657fc8dcd01e0e5e08cb817123ccb82e2c604b34f9ec9c1755e3f.json 
  5. 2e18de03719583329b7fa8374130e57cc7cddf2b5a487fe4a4988622ca60575c/layer.tar 
  6. 2e18de03719583329b7fa8374130e57cc7cddf2b5a487fe4a4988622ca60575c/VERSION 
  7. 2e18de03719583329b7fa8374130e57cc7cddf2b5a487fe4a4988622ca60575c/json 
  8. manifest.json 
  9. repositories 
  10.  
  11. 🐳  → cd image 
  12. 🐳  → ls -lh 
  13. total 3.0M 
  14. -r--r--r--. 1 root root 3.0M Jan  1  1970 16679402dc206c982b5552ab8de7d898547100e5468be29d4f67d393c0eadfdb.tar 
  15. drwxr-xr-x. 2 root root   50 Sep  3 17:42 2e18de03719583329b7fa8374130e57cc7cddf2b5a487fe4a4988622ca60575c 
  16. -r--r--r--. 1 root root  462 Jan  1  1970 e0851a4aa13657fc8dcd01e0e5e08cb817123ccb82e2c604b34f9ec9c1755e3f.json 
  17. -r--r--r--. 1 root root  213 Jan  1  1970 manifest.json 
  18. -r--r--r--. 1 root root  106 Jan  1  1970 repositories 
  19.  
  20. 🐳  → mkdir rootfs 
  21. 🐳  → tar xf 16679402dc206c982b5552ab8de7d898547100e5468be29d4f67d393c0eadfdb.tar -C rootfs 
  22.  
  23. 🐳  → tree rootfs 
  24. rootfs 
  25. ├── bin 
  26. ├── boot 
  27. ├── dev 
  28. ├── etc 
  29. │   ├── debian_version 
  30. │   ├── default 
  31. │   ├── dpkg 
  32. │   │   └── origins 
  33. │   │       └── debian 
  34. │   ├── group 
  35. │   ├── host.conf 
  36. │   ├── issue 
  37. │   ├── issue.net 
  38. │   ├── nsswitch.conf 
  39. │   ├── os-release 
  40. │   ├── passwd 
  41. │   ├── profile.d 
  42. │   ├── protocols 
  43. │   ├── rpc 
  44. │   ├── services 
  45. │   ├── skel 
  46. │   ├── ssl 
  47. │   │   └── certs 
  48. │   │       └── ca-certificates.crt 
  49. │   └── update-motd.d 
  50. │       └── 10-uname 
  51. ├── home 
  52. │   └── nonroot 
  53. ├── lib 
  54. ├── proc 
  55. ├── root 
  56. ├── run 
  57. ├── sbin 
  58. ├── sys 
  59. ├── tmp 
  60. ├── usr 
  61. │   ├── bin 
  62. │   ├── games 
  63. │   ├── include 
  64. │   ├── lib 
  65. │   │   └── os-release 
  66. │   ├── sbin 
  67. │   │   └── tzconfig 
  68. │   ├── share 
  69. │   │   ├── base-files 
  70. │   │   │   ├── dot.bashrc 
  71. │   │   │   ├── dot.profile 
  72. │   │   │   ├── dot.profile.md5sums 
  73. │   │   │   ├── info.dir 
  74. │   │   │   ├── motd 
  75. │   │   │   ├── profile 
  76. │   │   │   ├── profile.md5sums 
  77. │   │   │   └── staff-group-for-usr-local 
  78. ... 
  79. ... 

該鏡像只有一層,大小為 3MB,也沒有二進制文件,只有一些證書文件和目錄。如果向下滾動,還能看到許可證和時區配置??磥?Distroless 采取的是非常極端的手段,直接把不需要的二進制文件全部拋棄了,只留下一個空鏡像和部分必需品。

總結

由此看來,這幾個基礎鏡像如此受歡迎的主要原因就是體積小。鏡像越小,漏洞就越少,可攻擊面也會大幅減少,而且很容易維護。所以大家構建鏡像時盡量選擇這些鏡像作為基礎鏡像。

引用鏈接

[1]Google: https://github.com/GoogleContainerTools/distroless

 

責任編輯:武曉燕 來源: 云原生實驗室
相關推薦

2014-09-26 14:30:41

2010-12-01 12:31:23

NetCat掃描端口

2017-05-03 14:45:45

MySQL數據恢復

2013-06-08 10:36:47

Linux命令行

2020-07-02 09:21:40

Java 緩存開發

2009-07-21 14:16:18

Scalafor表達式

2013-04-11 10:51:27

2011-10-18 14:11:17

Web開發

2014-05-29 14:44:06

瑞士軍刀綜合征開發者

2022-02-15 10:15:13

Web網絡程序員

2023-12-25 12:03:42

2019-06-24 09:57:39

網絡工具調試

2011-08-01 09:43:08

PhoneGap 1.PhoneGap

2023-04-27 07:06:09

Categraf夜鶯

2015-09-28 09:46:31

ZooKeeper分布式系統瑞士軍刀

2019-06-27 17:00:09

nc命令 Linux

2017-04-21 09:42:18

4G5G物聯網

2021-12-28 09:55:40

UbuntuRescuezillaLinux

2009-09-09 12:10:40

2020-11-07 16:30:27

Python開發程序員
點贊
收藏

51CTO技術棧公眾號

久久在线精品| 日韩欧美中文字幕在线播放| 国产成人亚洲综合| 久草在线视频网站| 国产欧美一区二区精品忘忧草| 国产乱码精品一区二区三区中文 | 亚洲国产综合在线| 日本特级黄色大片| 欧美在线高清| 国内偷自视频区视频综合| 国产高清自产拍av在线| 粉嫩老牛aⅴ一区二区三区| 国产免费视频传媒| 国产在线精品一区二区夜色| 91国产丝袜在线放| 亚洲成人教育av| 国产又色又爽又黄刺激在线视频| 伊人伊成久久人综合网站| 国内外成人免费在线视频| 天天天干夜夜夜操| 欲香欲色天天天综合和网| 色综合久久久网| 交换国产精品视频一区| 成人午夜av影视| 亚洲精品成人三区| 国产亚洲在线观看| 成人深夜直播免费观看| 精品人人人人| 美女啪啪无遮挡免费久久网站| wwwww亚洲| 日韩一级片网站| 777电影在线观看| 色久综合一二码| 亚洲色图图片网| 亚洲一卡二卡三卡四卡五卡| 四虎国产精品成人免费4hu| 欧美激情一区在线| www.射射射| 国产mv日韩mv欧美| 99久久免费观看| 国产高清成人在线| 九一免费在线观看| 懂色av噜噜一区二区三区av| 日韩精品在线视频免费观看| www.亚洲在线| 99爱视频在线| 中文久久乱码一区二区| 91大神影片| 亚洲国产wwwccc36天堂| 午夜影院在线免费观看| 欧洲视频一区二区| aaa大片在线观看| 亚洲精品小视频在线观看| 国产亚洲人成a在线v网站| 日韩视频精品在线| 欧美变态网站| 国产一区二区丝袜| av成人毛片| 一本一本久久a久久精品综合妖精| 国内精品国产成人| 免费在线a视频| 中文字幕一区二区三区在线播放| 免费h片在线| 91黄视频在线| av资源亚洲| 91成人在线播放| 欧美国产先锋| 一本久道久久综合狠狠爱亚洲精品| 成人天堂资源www在线| 在线观看高清免费视频| 欧美丝袜一区二区| 在线男人天堂| 18性欧美xxxⅹ性满足| 好看的日韩av电影| 国产人妻人伦精品| 亚洲精品国产一区二区精华液 | 精品亚洲成a人在线观看| 麻豆视频在线播放| 国产精品久久久99| 中文字幕日韩视频| 日日噜噜夜夜狠狠视频| 日韩亚洲国产中文字幕欧美| 18禁裸男晨勃露j毛免费观看| 国产精品99一区二区三| 开心快乐六月丁香婷婷| 日韩精品在线观| 亚洲欧美激情插| 国产精品日本一区二区三区在线| 国产成人综合一区| 国产精品久久久久久久久久三级| 国产成人精品999在线观看| av一区在线| 久久亚洲精品视频| 天天干天天操天天玩| 精品国产91久久久久久| 免费超碰在线| 日韩在线观看免费全集电视剧网站| 国产精品qvod| 91网免费观看| 成人免费视频免费观看| 视频黄页在线| 中文字幕免费国产精品| 久久免费精品视频在这里| 看全色黄大色大片| 欧美日韩在线视频一区| 97高清视频| 男人添女荫道口喷水视频| 日韩hd视频在线观看| 久久精品国产99国产| 一区二区三区高清在线视频 | 国产精品美日韩| 香蕉视频在线看| 欧美二区乱c黑人| 日韩精品三区四区| 婷婷六月激情| 欧美成人亚洲成人日韩成人| 午夜一区在线| 啊灬啊灬啊灬啊灬高潮在线看 | 一区二区三区自拍视频| 欧美人xxxxx| 午夜国产精品影院在线观看| 亚洲久草在线| 日本一区二区三区视频在线观看| 亚洲精品日产精品乱码不卡| 欧美一级大黄| 久久福利电影| 亚洲一区二区三区中文字幕| 欧美亚洲福利| 婷婷视频在线播放| 精品视频999| 国产精品99视频| 超级碰碰视频| 精品综合久久久久久97| 国产精品2024| 美女av在线免费看| 日韩免费电影一区二区| 欧美午夜片在线看| 亚洲乱码免费伦视频| 黄网站免费观看| 欧美成aaa人片在线观看蜜臀| 精品在线播放免费| 日本精品600av| 欧美精品一区二区三区在线看午夜 | 国产婷婷视频在线| 亚洲精品免费av| 亚洲成a人v欧美综合天堂| youjizz亚洲| 久久久久免费精品| 久久久国产精彩视频美女艺术照福利| 国产在线精品一区二区| 成人短视频在线| 久久久久久久免费| 欧美中文字幕一区二区三区| 色小子综合网| 日韩福利一区二区| 亚洲一区二区三区在线免费观看| 亚洲一区二区美女| 欧美激情国产在线| 在线观看免费观看在线91| 成人av在线天堂| 日韩欧美亚洲综合| 欧美.www| 色帝国亚洲欧美在线| 亚洲综合欧美日韩| 亚洲免费中文字幕| 国产.欧美.日韩| 成人国产精品久久| 成人av小说网| 国产又爽又黄的激情精品视频| 性感美女极品91精品| 欧美激情五月| av色综合久久天堂av色综合在| 亚洲春色在线视频| 国产午夜精品视频| 91免费看片在线观看| 国产一区二区三区不卡av| 全部孕妇毛片丰满孕妇孕交| 国产精品视频专区| 欧美视频一区二| 麻豆精品视频在线观看| 天堂久久午夜av| 日韩一级在线免费观看| 欧美在线xxx| 欧美在线|欧美| 精品亚洲成a人| 久久影院一区二区三区| 在线播放国产区| 欧美最大成人综合网| 色狠狠久久aa北条麻妃| 一区二区三区在线观看动漫| 在线播放精品| 日本黄色一区| 一级毛片高清视频| 视频一区亚洲| 欧美激情女人20p| 色综合久久88色综合天天6 | 每日更新av在线播放| 天堂√在线观看一区二区| 欧美另类高清videos| 91精品办公室少妇高潮对白|