很多人用 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 的命令源码
https://hub.docker.com/_/busybox
https://en.wikipedia.org/wiki/BusyBox
https://github.com/docker-library/busybox
举个例子 wget
的实现。
https://git.busybox.net/busybox/tree/networking/wget.c?h=1_32_stable
另外,busybox 的镜像有几种不同的版本,如果你希望有一些包管理工具,也就是当你需要 curl
的时候能安装到,那最好选下带 -musl
, -glibc
这些标签之类的镜像,因为有些镜像 是直接 FROM scratch
的,也就是这种镜像就不会有包管理工具,这里一定要心中有数。