我们在制作docker镜像的时候,选择镜像的操作系统是个很重要的事情。目前的话都会选择busybox、alpine、debian/ubuntu、centos/fedora。
1.Busybox
busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.
busybox常用嵌入式设备,我第一次接触也是在无线AP的系统。印象中就是短小精悍!
busybox常称之为瑞士军刀,也不是没有道理,无线路由器或者无线AP早期的RAM都在4M,这还包含了固件中其他应用,busybox只有1M左右的大小完全可以承担起系统运行的责任!
在嵌入式linux领域BusyBox被广泛使用,其理由可以总结为以下两点:
减小文件尺寸
在嵌入式系统中,做为文件系统保存的辅助记忆装置,考虑到信赖性和成本问题,Flash ROM被经常使用(数Mbytes~数十Mbytes)。这一来就限制了辅助记忆装置的容量大小。
因此在作为嵌入式的首选相对于常用的linux系统,精简了很多不必要的的命令和指令。
减轻编译工作量
如果是为PC安装程序,只要将二进制文件安装在Linux分区上面即可。但是,在嵌入式系统上,由于硬件,和其用途多种多样,是不会有那样的二进文件的。所以,为了使用不同的应用程序,必须从不同的源代码来编译。并且,根据不同应用程序的需要,编译的方法也可能不同,使编译工作变得更加繁琐。
另一方面,BusyBox自己就集成了各种应用程序的功能,因此只要编译了BusyBox,就解决了很多的编译问题。
busybox的docker安装
docker pull busybox
创建并运行busybox容器
docker run -itd -P --name busy busybox
登陆busybox
docker exec -it busy sh
busybox 1.31.1 最新版本了。
2.Alpine
Alpine直译意思是阿尔卑斯山,如果在网上搜索不加上linux的话,你只能搜到跑车的图片。我自己也是在使用docker才了解到alpine的。
Alpine Linux是由社区开发的操作系统,它面向x86路由器、防火墙、虚拟专用网、IP电话盒及服务器而设计。它在设计时就贯彻了安全的理念,包含了一些主动安全特性如PaX和SSP,它们能防止软件中的漏洞被敌手加以利用。该系统采用的C语言库是musl,基础工具则都在BusyBox中。它们在嵌入式系统 中很常见,它们比GNU/Linux系统中的工具要小。
Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB),且拥有非常友好的包管理机制。官方镜像来自 docker-alpine 项目。
这里要说明的是alpine采用的是apk软件包管理器。
比如:
apk update # 更新系统
apk add vim # 安装vim软件
apk del vim # 删除vim软件
安装Alpine
docker pull alpine
从上面的图就可以看到,alpine只是比busybox大了一点点,但是会比busybox更加全面。目前,docker都已经开始建议使用alpine替换ubuntu。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。
目前,使用还是慢建议首先把系统更新成国内源。
3.Debian/Ubuntu
首先,说明一下两个的关系。
Debian于1993年8月16日由一名美国普渡大学学生Ian Murdock首次发表。
Ubuntu Linux最早于2004年作为Debian的一个分支出现,其创始人是南非企业家Mark Shuttleworth。
Ubuntu不是Debian的一次性分支。这两个Linux版本依然紧密联系,大量的Ubuntu软件包依然直接来自于上游的Debian。在每个Ubuntu版本开发初期,新的更新软件包自动从Debian不稳定版本直接导入到Ubuntu中。导入完毕后,这些软件包在Ubuntu中被进行充分的测试和完善,以确保在正式版推出后具有高度的可靠性和健壮性。
从与Debian的关系来看,你可以把Ubuntu看做一系列Debian不稳定版的快照,不过它已经被进行了完善,而且提高了易用性。Ubuntu开发者所做的工作是,在Debian的基础上简化软件安装过程,使其更易于被桌面计算机所使用。
因此,从两个关系就可以看出,学会一种第二个也就会了,他们都是使用APT软件管理器。
现在,大多是使用的ubuntu作为基础镜像。网上的这方面的资料ubuntu也是最多的。
下载安装
docker pull debian
docker pull ubuntu
基础镜像都是比较小,但是进去更新一下,就会发现容器文件大了许多!
4.Centos/Fedora
CentOS 和 Fedora 都是基于 Redhat 的常见 Linux 分支。CentOS 是目前企业级服务器的常用操作系统;Fedora 则主要面向个人桌面用户。
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统),它是基于 Red Hat Enterprise Linux 源代码编译而成。由于 CentOS 与 Redhat Linux 源于相同的代码基础,所以很多成本敏感且需要高稳定性的公司就使用 CentOS 来替代商业版 Red Hat Enterprise Linux。CentOS 自身不包含闭源软件。
Fedora 由 Fedora Project 社区开发,红帽公司赞助的 Linux 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。Fedora 的功能对于用户而言,它是一套功能完备的,可以更新的免费操作系统,而对赞助商 Red Hat 而言,它是许多新技术的测试平台。被认为可用的技术最终会加入到 Red Hat Enterprise Linux 中。
国内最常用而且自己用的也是centos,这个就不等不说,使用centos可以获得与redhat 企业级linux一样的功能和性能。同时centos还提供免费的长期升级和更新服务。因此, 在众多的RHEL的克隆版本中,CentOS是很出众很优秀的。
但是最重要的原因是国内的环境学习centos是最佳的选择,网上的资料丰富又齐全,有啥问题都可以通过百度找到,相对比其他的资料少,使用的人就会更少!
反观国内的操作系统,不乏又好用的,但是国内免费思想的原因,企业很难盈利就很难形成一个完整的生态,同时国内仿造能力出众太多了,许多企业也就捂得比较严实,资料少想学习都难!
从操作上说:Fedora最初使用了Yellowdog Update Manager(Yum),可以管理他们的.rpm软件包。较新版本的Fedora使用DNF软件包管理器。 它的功能与Yum完全相同,但是使用了dnf命令。 在引擎盖下,有一些可靠性,速度和可用性的改进,DNF是Yum的一个合乎逻辑的演变。
最后,说一下我们应该选择那个,我个人认为,你最熟悉那个就用那个,busybox和alpine虽然体积小,但是精简的东西,可能需要你后期根据项目在写Dockerfile的时候再加进来!而且需要每步不能出现错误,否则就很麻烦,当然大牛略过!
我开始用的centos 老是出错,但是网上资料最多的就是ubuntu,所以后来就都用的ubunut。
评论区