概述
很多人用 busybox,但是不是很多人能說出來 busybox 是個什么東西。
探究
用過 busybox 鏡像的同學都知道,busybox 沒有 curl
,另很多習慣用 curl
的同學會有點不習慣,然后會找各種 yum
, apt-get
, apk
等這些常見的 Linux 發行版的軟件包管理工具會安裝,但是最終都是徒勞的...因為 busybox 里壓根就沒有這些,唯一能做的,可能就是不用 curl
,該用 wget
好了。
這樣自然大家都會有疑問,為什么會沒有 curl
,又為什么裝不了,本文就簡單的給大家做個介紹。
關于 busybox 的概念和項目,可以參考一下下面的鏈接,這里不贅述了,簡單來說 busybox
并不是一個常見的 Linux 發行版,而是一個工具集,這里的工具集,理解成很多用C寫的命令和工具就好了,所以十分精簡,busybox 也許可以覆蓋各位工作中90%的工作,但是依然有10%的地方,他無法直接覆蓋。而我們經常在 Dockerhub 下載的 busybox 鏡像則是由 Docker 社區維護的,也就是一般來說 busybox 鏡像不會改也不會加什么命令,一般直接對接的就是 busybox 本身,當然有興趣的話,可以看看 busybox 的命令源碼。
舉個例子 wget
的實現:
https://git.busybox.net/busybox/tree/networking/wget.c?h=1_32_stable
另外,busybox 的鏡像有幾種不同的版本,如果你希望有一些包管理工具,也就是當你需要 curl
的時候能安裝到,那最好選下帶 -musl
, -glibc
這些標簽之類的鏡像,因為有些鏡像 是直接 FROM scratch
的,也就是這種鏡像就不會有包管理工具,這里一定要心中有數。