V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mmr
V2EX  ›  Docker

把 docker 中的 debian 当虚拟机使用有什么潜在问题吗?

  •  
  •   mmr ·
    confusder · 279 天前 · 1958 次点击
    这是一个创建于 279 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RouterOS v7 移除了 kvm 支持,只能用 Docker 了,想问问这么使用会有啥问题。

    18 条回复    2024-02-18 13:11:08 +08:00
    A01514035
        1
    A01514035  
       279 天前
    我首先想到的是持久化问题,但是只要你不删除掉容器,即使宿主机掉电重启,容器也还是可以重新 start 数据依旧还在吧。所以持久化也不是问题?当然要避免误删,不然你安装的软件都没了。挂载目录啥的可以解决数据问题但是 apt 安装的软件还是不太好挂载吧。
    OutOfMemoryError
        2
    OutOfMemoryError  
       279 天前
    这好像就是所谓的 LXC 吧,在某些需要独立内核的场景下会出问题
    YsHaNg
        3
    YsHaNg  
       279 天前
    硬件直通麻烦点
    Cola98
        4
    Cola98  
       279 天前
    注意镜像备份
    FarmerChillax
        5
    FarmerChillax  
       278 天前
    感觉这是个 X-Y 问题?感觉如果你的使用场景真的在意虚拟化,并不会问这个问题。为什么要把 docker 当虚拟机使用,感觉才是关键
    mmr
        6
    mmr  
    OP
       278 天前
    @FarmerChillax 因为 ROS 没有 kvm or lxc
    boris1993Jr
        7
    boris1993Jr  
       278 天前 via iPhone
    @mmr #6 那考虑搞个小主机跑单独的 Debian ?
    毕竟容器在设计的时候就不是这么用的……
    julyclyde
        8
    julyclyde  
       278 天前
    一方面是持久化
    另一方面有些资源在 cgroup 的隔离度还是不够
    adoal
        9
    adoal  
       278 天前
    要在物理机的 ROS 里运行虚拟机?这可能真是个 X-Y 问题。
    BeautifulSoap
        10
    BeautifulSoap  
       278 天前
    持久化是个问题
    要是我的话就直接备份下系统,然后物理机装个 PVE ,然后开个虚拟机专门给 RouterOS 了。剩下想跑什么系统就开几台虚拟机
    FarmerChillax
        11
    FarmerChillax  
       278 天前   ❤️ 1
    @mmr kvm 也好,lxc 也罢,这两者只是个工具,具体是「你要拿来干什么事?」,是简单的跑几个 web 服务?还是要做编译相关的工作?亦或是驱动相关的开发?简单的说就是「你要干的事情,需不需要这么底层的虚拟化?」,在给出的上下文中,给我的感觉是不需要的,以 docker 自身的用法就足以满足你的需求。(为什么得出这个感觉?因为如果有强烈的相关诉求,自己就很清晰的知道 docker 无法满足)
    shuimugan
        12
    shuimugan  
       278 天前
    你要找的是不是 ubuntu 的 lxd
    cdlnls
        13
    cdlnls  
       278 天前   ❤️ 1
    我一直把 docker 理解成一个“进程管理”工具,如果只是用来启动程序/管理进程,用 docker 那就没啥问题。docker 内置的一些功能,就有点像“虚拟机”,很容易给人一种 docker 可以当作虚拟机来用的错觉。但是 docker 和常见的虚拟机是完全不同的两套东西,它们实际上谁也不能代替谁。
    leonshaw
        14
    leonshaw  
       278 天前 via Android
    最大的问题就是内核隔离不够、一些功能受限
    mmr
        15
    mmr  
    OP
       278 天前
    @FarmerChillax 其实是有点不够的,ROS 的 docker 没有那么多权限可以开,那些需要操作网卡/进程的程序很多跑不了。比如 dnsmasq 之类的。
    FarmerChillax
        16
    FarmerChillax  
       278 天前
    @mmr #19 「 ROS 的 docker 没有那么多权限可以开」有两点疑惑:
    1. 为什么说是 ROS 的 docker ?
    2. 权限不够可以自己加,为何说没有那么多权限可以开?这个能否具体点?目前我只能粗暴的理解是 Web UI 上没得点?

    可以参考 #13 说的「 docker 是一个进程管理工具」,dnsmasq 之类也是能 docker 运行的 -> https://github.com/tschaffter/docker-dnsmasq

    因此感觉你是对 docker 了解的不够多,使用习惯上还是保持着原本「虚拟化」的使用习惯,而不是「容器化」的使用习惯(当然这也是一个普遍存在的问题)

    ## end
    楼上说的解决办法与 docker 的一些缺陷都很不错,可以按需选择。无论是 kvm 还是 docker ,都是个工具,用正确的使用方法来使用工具才是正途。 就像用叉子也能吃饭,但并没有什么人这么用。
    mmr
        17
    mmr  
    OP
       278 天前
    @FarmerChillax 我的场景是在 RouterOS 软路由里跑其他系统,RouterOS 中集成的 Docker 为了安全性做出了牺牲,比如不支持操作网卡,没法使用主机网络,没有 tun ,没法 fork 进程…………。也正是因为没法 fork 进程,所以 dnsmasq 没法正常启动。功能受限不是没配置,是没法配置。
    julyclyde
        18
    julyclyde  
       277 天前
    @cdlnls 你的认识很精确
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3157 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.