Distrobox

跳转到:导航搜索

Distrobox 是一种提供多种不同 Linux 发行版的容器化运行环境的工具。

它对于使用不可变 Linux(例如 MicroOS)的用户来说尤其有用,它可以提供一个可读写的用户空间,以便安装新的工具而无需重启。它类似于其他工具,例如“toolbox”(默认包含在 MicroOS 的服务器版本中),但对于桌面使用具有一些其他优势。请参阅 https://github.com/89luca89/distrobox 以获取所有选项。

快速入门

Aeon

Distrobox 已经安装在 Aeon 机器上

使用以下命令创建并打开默认的 tumbleweed 环境:

  $ distrobox enter

Leap, Tumbleweed 和 MicroOS

Leap 默认不预装 Distrobox,因此用户必须手动安装。如果使用 Docker,您的用户应该在 docker 组中,否则您将收到以下错误 尝试连接到 Docker daemon socket 时权限被拒绝

 $ sudo zypper install distrobox # pulls in docker by default
 $ sudo groupadd docker; sudo usermod -aG docker $USER # you should re-login with the user for changes to take effect
 $ sudo systemctl enable --now docker
 $ distrobox enter

Distrobox 用于打包者

openSUSE 具有定制的 distrobox-ready 容器镜像,供 openSUSE 打包者、发布经理等使用。除了对 MicroOS Desktop 用户非常有用之外,它也可能对 Leap 或其他非 openSUSE 发行版的用户感兴趣。

此 distrobox 已经安装了所有以下工具并准备就绪

  • osc
  • git
  • build
  • vim
  • 许多 osc 服务插件(例如 tar、tar_scm、obs_scm、recompress、go_modules 等)
  • osc staging、cycle 和 origin 插件
  • opensuse-release-tools

要使用此镜像创建 distrobox,请运行

  $ distrobox create --root --name tumbleweed-pkg --volume /var/tmp:/var/tmp --image registry.opensuse.org/opensuse/distrobox-packaging:latest

或者如果您更喜欢使用 manifest 文件

  # distrobox.ini
  [tumbleweed-pkg]
  image=registry.opensuse.org/opensuse/distrobox-packaging:latest
  root=true
  volume=/var/tmp:/var/tmp
  $ distrobox assemble create


注意事项

  • --root 是可选的,但如果您想使用诸如 `osc build` 之类的功能,则需要它
  • --name 可以是您想要的任何 distrobox 名称,只需确保在下面也替换您使用的名称
  • --hostname 是可选的,但建议在运行无 root 权限的 distrobox 时使用,以避免与 netcfg 等软件包出现问题

如果您在创建期间使用了 --root,请确保使用 distrobox enter --root,否则您将创建一个新的 distrobox.

要进入 distrobox,请运行

  $ distrobox enter tumbleweed-pkg

在 Distrobox 内部使用 bpftrace

openSUSE 具有专门为 bpftrace 的使用量定制的 distrobox 容器。如果有人在他们的 Aeon 设置上具有分析和可观察性需求,这可能会派上用场。另一种潜在用例只是在具有一些自动帮助的 Tumbleweed 设置中具有相同的需求。

可以使用以下命令创建 distrobox

   $ distrobox create --root --name tumbleweed-bpftrace --image registry.opensuse.org/opensuse/distrobox-bpftrace:latest

然后可以通过发出此命令立即进入

   $ distrobox enter --root tumbleweed-bpftrace

在这种情况下,--root 选项是强制性的,因为容器必须赋予广泛的功能才能观察系统的当前状态.

Distrobox 导出

使用 distrobox-export,您可以在主机系统中创建一个快捷方式,以打开来自 distrobox 容器的应用程序。例如,要导出您安装的桌面(GUI)应用程序,请进入您选择的 distrobox 并输入以下内容(作为普通用户,而不是 root 用户):

  $ distrobox-export --app <name of the app>

这将填充您的用户目录,其中包含相应的<应用程序名称>.desktop文件、图标以及放置在~/.local/share/applications/中的链接,以填充用户的菜单,就好像该应用程序已安装在主机上一样。

或者,您可以导出非桌面程序(没有.desktop文件)使用--bin选项。从 distrobox 容器内,作为普通非 root 用户,运行

   $ distrobox-export --bin /path/to/bin/your_application

这将在~/.local/bin/your_application上安装一个包装脚本,在主机上。

要了解有关其他标志以及如何导出需要服务的其他应用程序(例如 syncthing)的更多信息,请参阅 distrobox-export man page

获取各种 openSUSE 发行版的 distrobox 镜像

您还可以通过 --init --additional-packages "systemd" 预安装其他软件包

  $ distrobox create -i registry.opensuse.org/opensuse/leap:latest -n leap15
  $ distrobox create -i registry.opensuse.org/opensuse/tumbleweed:latest -n tumbleweed