V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
cnt2ex
V2EX  ›  Linux

用 docker 隔离不同用户

  •  
  •   cnt2ex · 2020-06-15 11:33:34 +08:00 · 4309 次点击
    这是一个创建于 1383 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务器上多个用户,很多时候这些用户需要安装一些包,但我又不想直接给他们 root 权限,现在是打算给每个用户一个容器,然后容器里拥有 root 权限,让他们在容器里装自己需要的包。

    有办法把用户限制在容器里,ssh 登录后直接进入自己的容器吗?

    第 1 条附言  ·  2020-06-15 15:25:13 +08:00
    用户都是认识的人,并不打算考虑有心攻击的人,毕竟发现了可以真人 PK 。由于需要共享 GPU,所以可能虚拟机不太合适。
    主要是因为每个用户需要搭建自己的环境,与其让他们乱加 apt 源,随意 sudo make install 把系统搞得乱七八糟,不如用 docker 隔离开来。
    27 条回复    2020-06-22 17:28:54 +08:00
    whi147
        1
    whi147  
       2020-06-15 11:36:18 +08:00 via iPhone   ❤️ 1
    我建议噢,用 kvm
    cloudbeyond
        2
    cloudbeyond  
       2020-06-15 11:44:24 +08:00
    听 1 楼的,Docker 不适用于你的场景
    rayhy
        3
    rayhy  
       2020-06-15 11:45:40 +08:00
    dockerfile 里面直接安装 sshd 呀,然后把 22 端口映射到外部随便一个端口比如 50001,用户直接 ssh root@ip -p 50001 。

    docker 官方文档里面就有教程: https://docs.docker.com/engine/examples/running_ssh_service/
    cnt2ex
        4
    cnt2ex  
    OP
       2020-06-15 12:44:38 +08:00
    @whi147
    @cloudbeyond
    我再看看


    @rayhy 这样每个用户都得分配一个端口
    Ultraman
        5
    Ultraman  
       2020-06-15 12:59:00 +08:00 via Android
    不想一人一个端口,那就给其他所有人一块开一个容器,随他们折腾。
    Osk
        6
    Osk  
       2020-06-15 13:02:44 +08:00 via Android
    lxc 如何?
    yulgang
        7
    yulgang  
       2020-06-15 13:14:44 +08:00
    听 1 楼的
    singerll
        8
    singerll  
       2020-06-15 13:17:01 +08:00 via Android
    我要是想装 docker 怎么办?
    liuxu
        9
    liuxu  
       2020-06-15 13:20:30 +08:00
    1 楼说的没错,virtualbox 也适合,有 headless
    joesonw
        10
    joesonw  
       2020-06-15 13:20:47 +08:00
    docker 只做资源隔离. docker 不管安全. 都可以装包了, root 不 root 有什么区别? 装个可以提权的包不就好了.
    ETiV
        11
    ETiV  
       2020-06-15 13:21:55 +08:00 via iPhone
    如果需求只是安装包,给他们用 brew

    现在支持 Linux 了
    Jirajine
        12
    Jirajine  
       2020-06-15 13:46:53 +08:00 via Android   ❤️ 1
    docker 自带的 usermap 功能
    yuzunzhi
        13
    yuzunzhi  
       2020-06-15 14:00:03 +08:00
    你的需求就是更适合用虚拟机解决,如楼上所说,各种虚拟化技术随便。
    另外对于运维来说,不把 docker 用成虚拟机已经是个很低很低的底限了。
    dapang1221
        14
    dapang1221  
       2020-06-15 14:00:31 +08:00
    docker 逃逸了解一下,根本防不住有心攻击的人
    baymax123456
        15
    baymax123456  
       2020-06-15 15:36:49 +08:00
    @singerll docker on docker
    swulling
        16
    swulling  
       2020-06-15 15:39:01 +08:00
    @cnt2ex 6w 个端口还不够分么,你有几个用户?
    dorothyREN
        17
    dorothyREN  
       2020-06-16 01:12:53 +08:00
    先安装好 docker,然后给每个用户的登录 shell 改成 docker exec -it {docker 实例} /bin/bash 理论上可行。
    fengdra
        18
    fengdra  
       2020-06-16 01:56:44 +08:00 via Android
    可以试试 rootless 容器,这样每个人可以单独开,不用统一配置
    widewing
        19
    widewing  
       2020-06-16 06:35:52 +08:00 via Android
    用 lxc
    LokiSharp
        20
    LokiSharp  
       2020-06-16 09:22:10 +08:00 via iPhone
    CentOS 8 的 Podman 是 rootless 的,可以试试
    silentx
        21
    silentx  
       2020-06-16 15:30:22 +08:00
    docker 直接 pull ubuntu 好了 先把 ssh start 起来 然后挂住

    ip 用 docker 开 macvlan 每个 container 分配一个 ip 就好了

    这样每个人都相当与有一台自己的 ubuntu 了 还都是 root
    CodeCodeStudy
        22
    CodeCodeStudy  
       2020-06-16 16:59:44 +08:00
    注意要限制资源的使用
    --cpus
    -m
    --device-write-bps

    我就碰到过没限制容器的 CPU 使用率,导致宿主机挂了的情况
    tomychen
        23
    tomychen  
       2020-06-17 13:18:07 +08:00
    chroot
    yanqiyu
        24
    yanqiyu  
       2020-06-17 17:01:42 +08:00 via Android
    建议使用 podman 之类的 rootless 容器,实现可以参考 Fedora 提供的 toolbox
    特性
    1 )全程用户没有特权
    2 )在容器中表现为 root 权限,可以正常安装软件,配置开发环境
    3 ) proc 、home 等分区会正常挂载,保证使用体验无缝,如果是带图形的话 dbus 以及 X socket 也会处理
    --------
    对于用户而言大家都不给 sudo,让他们使用 toolbox 进入自己的环境
    --------
    因为是 rootless 容器,哪怕被橄榄权限也不会超过用户本来的权限,不会对于系统造成破坏
    wendellyih
        25
    wendellyih  
       2020-06-18 18:16:54 +08:00
    @ETiV 这个方案可行,之前多个同事共享一台开发机时用的就是这个方案,现在都独立开发机了,就放飞自我了。
    solider245
        26
    solider245  
       2020-06-22 12:32:39 +08:00
    @CodeCodeStudy 容器内的系统再使用 docker 的话,是和新安装 docker 一样吗?
    CodeCodeStudy
        27
    CodeCodeStudy  
       2020-06-22 17:28:54 +08:00
    @solider245 没试过,应该装不了吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5452 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 08:51 · PVG 16:51 · LAX 01:51 · JFK 04:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.