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

可以在 docker 容器中运行 host 中的 shell 命令吗?

  •  
  •   mailshuxin · 2021-10-12 14:25:02 +08:00 · 2397 次点击
    这是一个创建于 898 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前网站使用了 docker,几个常用的组件 nginx,redis,mariadb,php 都用了容器,这样非常便于迁移和备份,感觉性能的影响也不大。特别是有程序需要用到 php52,用 docker 真的是超级简单。

    目前遇到一个问题:php 需要调用 fontools 中的 pyftsubset,但是 fontools 是安装在 host 中的。如

    有没有可能实现,从容器中调用 host 中的命令呢?

    谢谢帮助。

    23 条回复    2021-12-01 15:56:55 +08:00
    anstxy
        1
    anstxy  
       2021-10-12 14:39:37 +08:00
    问下这个 host 是啥
    ReferenceE
        2
    ReferenceE  
       2021-10-12 14:39:56 +08:00 via Android
    从容器调用 host ...
    不清楚,您是否在查找:虚拟机 /容器化逃逸漏洞
    SingeeKing
        4
    SingeeKing  
       2021-10-12 14:42:19 +08:00   ❤️ 1
    一个正确的方法是在 docker 中安装 fontools
    Yourshell
        5
    Yourshell  
       2021-10-12 14:43:00 +08:00 via Android
    二进制的话直接 mount ?
    Vegetable
        6
    Vegetable  
       2021-10-12 14:46:07 +08:00
    别瞎搞,老老实实装进 docker
    passon
        7
    passon  
       2021-10-12 14:50:36 +08:00
    这容器不存粹
    sadfQED2
        8
    sadfQED2  
       2021-10-12 14:54:49 +08:00 via Android
    容器中使用 ssh 连接宿主机,然后执行 shell 命令
    anonydmer
        9
    anonydmer  
       2021-10-12 15:19:34 +08:00
    老老实实自己定制个容器,里面装上 php 和 fontools
    ampedee
        10
    ampedee  
       2021-10-12 15:45:45 +08:00 via iPhone
    可以,直接把 host 的根目录挂载进容器
    noe132
        11
    noe132  
       2021-10-12 16:09:06 +08:00 via Android
    我有个容器需要在 host 上修改防火墙规则
    我是在容器里 ssh 到 host 执行命令的。
    iBaoger
        12
    iBaoger  
       2021-10-12 16:42:10 +08:00 via Android
    1.docker 里安装
    2.写一个远程调用
    guxin0123
        13
    guxin0123  
       2021-10-12 18:22:45 +08:00
    docker run -p 8081:8081 -d -v /var/run/docker.sock:/var/run/docker.sock wangbinxingkong/fast

    这些 dockers 管理工具 管理宿主机 docker 服务是这样映射的
    但是你的那个好像又不是服务,这个方式不一定能行
    acrisliu
        14
    acrisliu  
       2021-10-12 19:02:52 +08:00 via iPhone
    自己以 php 为 base image 写个 dockerfile,把 fontools 装进去最好。
    ik
        15
    ik  
       2021-10-12 19:37:05 +08:00 via iPhone
    用 sock 方式启动,挂载 sock 到容器?
    Zhancha
        16
    Zhancha  
       2021-10-12 20:39:03 +08:00
    @SingeeKing 能请教下是 fontools 还是 fonttools 吗?另外可以给我个关键字吗?我查 fontools 都是 python 中的字体格式化库。
    Zhancha
        17
    Zhancha  
       2021-10-12 20:41:37 +08:00
    @acrisliu 能请教下 fontools 是什么吗?或者要配合什么关键字一起搜索?
    acrisliu
        18
    acrisliu  
       2021-10-12 21:10:24 +08:00 via iPhone
    @Zhancha 没用过,复制的楼主的,刚查了下应该是 fonttools 吧。
    julyclyde
        19
    julyclyde  
       2021-10-13 12:52:17 +08:00
    正常情况下,对容器来说,host 是一个无法感知到的东西
    mailshuxin
        20
    mailshuxin  
    OP
       2021-10-13 14:14:42 +08:00 via iPhone
    谢谢大家。安装到容器里机了。这样比较简单实用
    Zhancha
        21
    Zhancha  
       2021-10-14 21:05:55 +08:00
    @mailshuxin 能请教下解决方案吗?
    MXuD0ng
        22
    MXuD0ng  
       2021-12-01 15:55:07 +08:00
    docker run -it --privileged -v /proc:/host/proc {DOCKER_IMAGE}

    容器内调用 host shell:nsenter --mount=/host/proc/1/ns/mnt sh -c " Your command here "
    MXuD0ng
        23
    MXuD0ng  
       2021-12-01 15:56:55 +08:00
    @MXuD0ng 这种方式挺危险的 需要注意一下哦,因为当前容器可能拥有 Root 权限
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1540 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:15 · PVG 01:15 · LAX 10:15 · JFK 13:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.