Hunter的大杂烩 技术学习笔记

2026-03-17

distrobox虚拟机使用注意事项

Filed under: 技术话题 — hunter @ 10:49 pm

一、Distrobox 本质上是基于 Podman/Docker 的轻量容器环境,它并不是一个完全隔离的虚拟机。关键点如下:

  1. 共享宿主机的内核
  2. 默认没有启用严格的 PID namespace 隔离
  • 可以用 –pid 参数进行隔离:podman run –pid=private …
  1. Distrobox的理念是让容器与宿主机紧密结合,方便共享文件、进程、网络。
  • 它更像是一个“增强版的 chroot 环境”,而不是安全隔离的沙箱。

二、如何判断某个进程是否运行在宿主机还是虚拟机:
Distrobox 默认共享宿主机的 PID 命名空间,在容器里运行 ps 时会看到宿主机进程。

  1. 判断当前命令行是否在宿主机:
    • cat /run/.containerenv 2>/dev/null && echo “在 distrobox/podman 容器内” || echo “可能是真实服务器”
      • cat /.dockerenv 2>/dev/null && echo “在 docker 容器内” || echo “可能是真实服务器”
  2. 宿主机上用 /proc//cgroup 来确认

三、如何避免多个容器间互相干扰

  1. 在容器内用绝对路径独立创建 venv,比如:
    bash
    python3 -m venv /home/container1/venv 不要放在 ~/ 下,这样不同容器不会互相影响。
  2. 使用容器专属的 HOME
    启动 Distrobox 时指定一个独立的 home 路径:
    bash
    distrobox-create -n mybox –home /home/container1/box_home 这样每个容器有自己的 HOME,不会共享。
  3. 利用 Podman/Docker 卷挂载
    把需要共享的目录(比如项目代码)单独挂载,而不是整个 /home。
    例如:
    bash
    podman run -v /var/llama_log:/var/llama_log/container1
  4. 区分 Python 环境
    使用 pyenv 或 conda 在容器内管理 Python 版本和依赖,避免和宿主机混用

四、总结

  1. 创建容器时:
    设置共享模型目录
    设置单独日志目录
    设置单独home目录
  2. 开发环境设置
    在容器内为本容器设置独立的运行目录,不同容器不要混在一起

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress