容器里如何调用/执行主机(群晖 NAS)的命令? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
prince12
V2EX    Docker

容器里如何调用/执行主机(群晖 NAS)的命令?

  •  
  •   prince12 2019-02-07 00:36:02 +08:00 4010 次点击
    这是一个创建于 2451 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:需要自动检测油管视频更新并下载到 NAS,但群晖 DSM 上装不了文件监测的服务,但可以安装 youtube-dl 服务;想的办法是,安装可以监测文件变动的 docker,再调用 youtube-dl

    实践:新建了一个容器 coppit/inotify-command 用于监测文件夹改动并执行命令,并在这个容器做了文件夹映射 https://hub.docker.com/r/coppit/inotify-command/

    问题:按照 wiki,可以监测到文件夹改动,但跑到最后一步,执行主机的 youtube-dl 下载命令时显示 coppit/inotify-command,应该是容器没办法调用宿主的命令

    容器运行日志: 2019-02-06 16:13:46 stdout /config/download.sh: line 6: youtube-dl: not found 2019-02-06 16:13:46 stdout [2019-02-06 16:13:46] Running command as user "root"... 2019-02-06 16:13:46 stdout [2019-02-06 16:13:46] Found existing user "root" with the proper user ID and group ID. Skipping creation of user and group... 2019-02-06 16:13:46 stdout [2019-02-06 16:13:46] watch: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 2019-02-06 16:13:46 stdout [2019-02-06 16:13:46] watch: Running command with user ID 0, group ID 0, and umask 0000 2019-02-06 16:13:46 stdout [2019-02-06 16:13:46] watch: Watch directory stabilized for 5 seconds. Triggering command. 2019-02-06 16:13:41 stdout [2019-02-06 16:13:41] watch: Waiting for watch directory to stabilize for 5 seconds before triggering command 2019-02-06 16:13:41 stdout [2019-02-06 16:13:41] watch: Detected change to directory /config/未命名文件夹

    7 条回复    2019-02-12 13:34:56 +08:00
    ma6254
        1
    ma6254  
       2019-02-07 06:47:40 +08:00
    在容器中安装 youtube-dl,然后把下载目录以及配置文件啥的映射进去
    prince12
        2
    prince12  
    OP
       2019-02-07 12:12:12 +08:00 via iPhone
    @ma6254 您的意思是一个容器安装两个应用?还是新建一个 youtube-dl 容器,与 inotify 容器做连接?
    prince12
        3
    prince12  
    OP
       2019-02-07 12:16:55 +08:00 via iPhone
    更正:但跑到最后一步,执行主机的 youtube-dl 下载命令时显示 coppit/inotify-command
    应该是 youtube-dl:not found
    mmtromsb456
        4
    mmtromsb456  
       2019-02-07 16:01:59 +08:00
    在当前监听文件系统更改的容器里面安装 youtube-dl 就好了.youtube-dl 本身不大.就是需要一个 python 环境而已.链接外部 youtube-dl 反而更加麻烦.
    yylbfyl
        5
    yylbfyl  
       2019-02-08 07:53:59 +08:00 via iPhone
    为啥要用容器?还不是要实现跟宿主机隔离!
    隔离了还怎么从容器里执行命令?显然直接的方法是不可能的。
    需要设计一个回调机制,宿主机里写一个执行命令的服务,然后监听一个接口,最后从容器里面去调这个接口来实现。
    winglight2016
        6
    winglight2016  
       2019-02-08 09:11:15 +08:00
    #1 已经说得很明确了,容器只能通过映射访问文件夹,所以 youtube-dl 是在容器内运行(前提是在容器中安装好),然后下载目录映射到 NAS。执行宿主命令就别想了,能这么做还叫容器吗?
    julyclyde
        7
    julyclyde  
       2019-02-12 13:34:56 +08:00
    这才几年,就已经发展到
    离开容器就不会用系统
    的地步了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     894 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 21:51 PVG 05:51 LAX 14:51 JFK 17:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86