FreeBSD OCI 容器简介

《在 FreeBSD 上运行 Linux 容器!》https://www.youtube.com/watch?v=HV-wUUzRCMo

我想你在过去十年里大概没有与世隔绝,所以我就不解释什么是 容器 了。不过我会提到什么是开放容器倡议(Open Container Initiative,简称 OCI),因为 FreeBSD 刚刚成为了它的一部分。引用 他们自己网站 上的话:

“开放容器倡议(OCI)是一款轻量级、开放治理结构,其明确目的是围绕容器格式和运行时创建开放的行业标准。”

很好。为了在这个框架内工作,我们需要一款工具。登场的是 Podman:

“Podman 是一款功能齐全的容器引擎,是一款简单的无守护进程工具。Podman 提供了与 Docker CLI 可比的命令行,使从其他容器引擎的迁移变得容易,并可管理 pod、容器和镜像。”

规则已经设定。让我们看看 Podman 所谓的“简单”,是否真的名副其实。

安装与设置

我这里从全新的 FreeBSD 15.0-BETA3 安装开始,但我也在 CURRENT、STABLE、14.3-RELEASE 上进行了测试,结果完全一致。让我们安装所需包:

# pkg install -y podman-suite

Podman 默认会把容器存储在 /var/db/containers,所以你可能想为它创建专用的 ZFS 文件系统:

# zfs create -o mountpoint=/var/db/containers zroot/containers

如果我们希望访问运行在容器中的任何服务,就需要使用 pf 防火墙。podman 有个示例配置文件,让事情变得简单:

# cp /usr/local/etc/containers/pf.conf.sample /etc/pf.conf
# sysctl net.pf.filter_local=1

别忘了在启用并启动 pf 服务之前,更新复制文件中的接口变量。 当然,如果你已经在运行 pf,并且已经有配置文件,请不要直接覆盖。只需从示例文件中取出相关部分,添加到现有配置中即可。

# service pf enable
# service pf start

如果我们想使用任何基于 Linux 的容器,还需要启用 Linux 服务:

# service linux enable
# service linux start

准备就绪。我们来试试 FreeBSD 容器(这里我们是普通用户,所以需要使用权限提升,因为目前 podman 需要 root——我个人偏好使用 doas;它小巧而简单):

$ doas podman run ghcr.io/freebsd/freebsd-runtime:14.3 freebsd-version
14.3-RELEASE

非常简单!我们再测试一个 Linux 容器:

$ doas podman run --rm --os=linux docker.io/alpine cat /etc/os-release | head -1
NAME="Alpine Linux"

同样非常简单。

你可以在 GitHubDocker Hub 上找到 FreeBSD OCI 镜像。不过我们可以想象,许多人更希望使用 Linux 镜像。

测试一些有用的东西

我很早前就听说过 Caddy,当时是在与一家基于 FreeBSD 的公司讨论大型多人在线游戏服务时(那是另一个有趣的故事,以后再说)。简单了解后我发现,它可能是一个在容器中安全地提供网站服务的极其简单的方法。于是我用 Hugo 生成的静态网站进行了测试——仅仅是提供 public 文件夹。

$ doas podman run --os=linux -p 80:80 -v $PWD/website:/usr/share/caddy -v caddy_data:/data docker.io/caddy

哇,太简单了!

我能得到什么?

除了让现有的 FreeBSD 用户能使用容器之外,Podman 还将把一大批新用户带到 FreeBSD 世界。我们已经看到,越来越多的新用户访问 YouTube 频道Subreddit,希望在 FreeBSD 以简洁和可靠著称的基础上构建他们的数字世界。ZFS 万岁 💪

因此,我决定尝试一个有点奇特的挑战。很多年前,我在 Docker Hub 上发布过一个容器:以 CentOS 为基础的 Python Pandas。那我能否在我崭新的 OCI FreeBSD 服务器上运行它?

doas podman run -it --os=linux docker.io/phips/pandas:v3 /bin/bash

可以!太棒了!这意味着可以将旧的工作负载迁移到新平台上。

快速又简单

就是这样。在 FreeBSD 上启动并运行容器既简单又快捷。同时,它也非常容易使用旧的容器——为将底层平台迁移到一个精心设计、坚如磐石的操作系统提供了路径。

FreeBSD 手册很快将更新,加入 OCI 容器的正式文档,但与此同时,你可以查看核心成员 Dave Cottlehuber 的工作文档

我们会定期发布新的技术主题文章和视频,因此请务必订阅 YouTube 频道,并在你喜欢的 RSS 阅读器中关注此订阅源。如果你希望通过电子邮件接收更新,也可以订阅我们的通讯

我们也希望这个内容系列是互动的——你希望我们讨论什么?有哪些 FreeBSD 问题可以帮你解决?请联系我们,告诉我们你的想法。

最后更新于

这有帮助吗?