FreeBSD 可以在 Docker 中运行吗?

问题描述 投票:0回答:2

我一直在寻找

Docker
FreeBSD
图像但找不到,FreeBSD可以在docker中运行吗?如果没有,为什么不呢?

docker freebsd
2个回答
15
投票

未来编辑:不,你不能,以下项目都没有超越原型。


技术上是可以的,但是你需要一个 FreeBSD 主机来完成它,而 Docker 目前在 FreeBSD 上“有些不稳定”。 Docker 1.7 中有一个分支,从技术上讲可以启动容器,但实际上你不想使用任何东西。 Jetpack 希望能够在 FreeBSD 11 中最终确定,并将在这里提供更好的解决方案。

https://wiki.freebsd.org/Docker 有信息。您可以让它在完全更新的 10.3 上运行,但预计会出现很多奇怪的情况。


2
投票

这里有很多警告,但是是的,你可以,不,它不依赖于 FreeBSD(但 openbsd 可能无法工作)。

#!/bin/sh

wget https://download.freebsd.org/ftp/releases/ISO-IMAGES/13.2/FreeBSD-13.2-RELEASE-amd64-bootonly.iso

cat -> docker-compose.yml <<< EOL
---
version: "3"
services:
    freebsd-via-qemu:
        image: jkz0/qemu:latest
        cap_add:
            - NET_ADMIN
        devices:
            - /dev/net/tun
            - /dev/kvm
        volumes:
            - ./FreeBSD-13.2-RELEASE-amd64-bootonly.iso:/image
        restart: always
...
EOL
docker-compose up -d

上面的 shell 脚本将下载 FreeBSD 的仅启动 iso,然后启动 QEMU 容器,该容器又启动操作系统。我使用 Plan9、SimH、MVS、Freenas、AROS 和 VyOS 等其他系统执行此操作。是的,这也适用于 Podman、WSL 或 K8S。

现在需要注意的是,这显然不是在 Ring 0 中运行的虚拟机管理程序,而是在用户空间中运行并被囚禁的 x86 模拟器。您不会从此设置中获得任何性能,并且可能会遇到设备驱动程序的一些问题,或者更糟糕的是,除了作为玩具/研究之外,您无法用于任何其他用途。

更新:

放心,我没有回答OP的第二个问题;为什么不呢。 Docker 从根本上来说只是一个带有 RestAPI 守护进程的包装器,用于核心 Linux 内核技术,例如 cgroup、NetNS、vxlans、proc 命名空间、用户命名空间和 unionfs。例如自 1991 年以来 Plan9 的大部分内容都是由狡猾的 Linux 内核开发人员重做的。

是的,BSD 有监狱,但那是作为 chroot 的用户空间,而不是像 Linux 这样的内核空间或像 Plan9 这样的 proc/stack 空间。 [在过去 15 年左右的时间里,Open 或 FreeBSD 可能已经改变了]

基本上,Linux 内核空间的命名空间堆栈内的本机 bsd 内核或用户空间在没有模拟器或虚拟机管理程序的情况下无法执行。 WSL(又名 hyper-v)和 xhyve(OSx 的虚拟机管理程序)上也存在同样的问题。这就是 QEMU 在上面的示例中起作用的原因。它是加载 BSD 内核并在容器的命名空间内运行的虚拟机管理程序。

© www.soinside.com 2019 - 2024. All rights reserved.