在FreeBSD系统中使用BastilleBSD像“docker”一样管理Jail

2023-06-15 13:06:01 2点赞 8收藏 0评论

前言

FreeBSD是一个优秀的系统,jail 是共享系统资源的一个虚拟机容器,从 FreeBSD 4.X 开始就可用了,发展到13.2已经是非常成熟的容器了,在实用性、性能、可靠性和安全性方面持续增强。之前使用过CBSD(bsdstore),想用来简化FrreBSD系统的jail管理,因为CBSD包含了太多功能,有虚拟机和集群功能,对我来说使用过于复杂,浅尝就卸载了。

可以看到CBSD网站上列举的Jail管理工具时间线,目前就剩下AppJail、Bastillebsd、CBSD、Mkjail四个工具还在开发了。

Jail管理工具时间线Jail管理工具时间线

在试用了Bastillebsd后,发现用来管理Jail非常简单,因为Bastillebsd是以容器思维开发的,所以它命令使用方法基本和docker的命令差不多,下面来详细使用Bastillebsd来管理Jail。

使用入门

首先是安装Bastillebsd,就像安装一般软件一样:

pkg install bastille

安装完成后,首先要下载当前系统版本容器的底包,只有先下载底包才能创建Jail容器,例如宿主机使用的是FreeBSD 13.1-RELEASE,就先下载:

bastille bootstrap 13.1-RELEASE

请耐心等待下载完成,也可以把Update源修改成国内源加快下载速度。

下载完成底包后就可以创建虚拟环境的容器了,下面命令“freshrss”为你要创建的容器名称,后面13.1-RELEASE就是你刚刚下载的底包版本后面跟着手工设置的ip地址,因为默认创建命令是桥接网络,所以容器和宿主机是同一网段的ip,如果宿主机有多个网口也可以指定接口名称,后面接口为可选参数。

bastille create freshrss 13.1-RELEASE 192.168.1.8 [interface]

在创建成功后,使用bastille start freshrss启动容器,bastille stop freshrss停止容器。

容器启动后,使用bastille console freshrss命令就可以进入虚拟容器中了,只要进入容器里面就能按照平常安装配置系统一样了。除了升级系统和软件外,就和正常使用FreeBSD系统一样。

因为虚拟容器防修改的机制,升级系统和容器里面的软件需要在宿主机环境使用bastille命令来操作。

首先是打补丁与更新,与宿主机freebsd-update fetch等价命令就是:bastille update 13.1-RELEASE

完成这个命令后将会升级所有版本为13.1-RELEASE容器到最新的-p版本,例如13.1-RELEASE-p7。

当有比13.1-RELEASE更加新的版本发布后我们要先将宿主机的系统按照FreeBSD手册“执行主要和次要版本升级”(bsdcn)升级到13.2-RELEASE,然后才能升级容器里面的系统。

在完成了宿主机系统的升级,我们需要使用命令:bastille upgrade 13.1-RELEASE 13.2-RELEASE来将13.1的容器全部升级到13.2。升级完成后要把容器里面软件全部升级,使用命令:bastille pkg ALL upgrade

注意:当你使用bastille upgrade 13.1-RELEASE 13.2-RELEASE来升级完成你的容器后,千万不能再使用bastille update 13.1-RELEASE了,这样会把容器的13.2系统破环掉。就我用过的方法就是用命令bastille bootstrap 13.2-RELEASE下载完成最新的底包后,停用容器,使用bastille edit freshrss fstab命令编辑容器里面的fstab文件,把其中的/usr/local/bastille/releases/13.1-RELEASE...修改成/usr/local/bastille/releases/13.2-RELEASE...

然后就可以使用bastille update 13.2-RELEASE打补丁与更新了。

系统自启动bastille

在/etc/rc.conf文件添加两行就行了,bastille_list后面是容器名称。

bastille_enable="YES"
bastille_list="freshrss"

类似docker功能

为什么说使用Bastillebsd像docker一样,因为Bastillebsd的导出导入功能非常像dockers部署一样,把软件运行环境打包导出就能在其他系统导入了,完全不用重新再配置软件运行环境,可以说完全复制了软件原来运行环境和数据。

导出命令:bastille export --txz freshrss

导入容器命令(后面为打包文件路径):bastille import /path/to/archive.file

具体更多命令的使用方法请参考bastille官方文档。

如果需要虚拟机和集群功能,可以考虑使用功能更强大的CBSD。

后记

FreeBSD Jail本身就是一个系统级非常强大容器环境,只是使用了Bastillebsd来更方便去操作和管理Jail。如果官方能运营一个像Docker的镜像社区,方便使用者下载导入其他人分享的打包程序,我相信对普及FreeBSD系统是一大好事。

自从最早的m0n0wall(居于FreeBSD 6.4开发)路由系统,中间到openwrt,再到2020年开始使用居于FreeBSD开发的opnsense路由系统。家里的nanopi neo2、x86主机也一直使用FreeBSD系统,系统版本也一直从12.X平滑升级到现在的13.2,依然稳定地运行着。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
8
扫一下,分享更方便,购买更轻松