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

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

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

    背景:需要自动检测油管视频更新并下载到 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   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:17 · PVG 15:17 · LAX 23:17 · JFK 02:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.