V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
raysonx
V2EX  ›  分享创造

在 Docker 里面运行网易云音乐 (分享如何在 Docker 里运行 GUI 程序)

  •  
  •   raysonx ·
    vfreex · 2017-07-24 15:59:49 +08:00 · 9373 次点击
    这是一个创建于 2672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    众所周知,网易云音乐和深度 Linux 合作推出了 Linux 版的网易云音乐,可惜

    • 它是闭源的
    • 只支持 deepin 15、Ubuntu 16.04 和 Ubuntu 14.04

    为了能在任意 Linux 桌面下运行,以及避免闭源软件对系统造成影响,我尝试把它打成了 Docker image (基于 Ubuntu 16.04 )。 其实本来想打一个 flatpak 包,但是失败了(补了一堆依赖,不知道还有没有遗漏的,最后还报 udev 错误--!)。

    其实思路很简单,把二进制软件包及没有列出的依赖装进 image 后,主要解决以下问题(docker-compose.yamlDockerfilehttps://github.com/vfreex/docker-netease-cloud-music):

    1. 挂载 host 上的 /tmp/.X11-unix 到 container 里的同一路径
    2. 将环境变量 DISPLAY 从 host 传到 container
    3. 禁掉 SELinux (主要是懒得折腾 SELinux 的权限设置了)
    1. 挂载 $XDG_RUNTIME_DIR/pulse/native 到 container
    2. 设置环境变量PULSE_SERVER为上一条中 container 里面挂载的路径
    3. 挂载 /dev/shm 到 container 里的同一路径

    我们希望 container 中运行程序的 user 和 host 的 uid 相同,以便访问用户 home 目录下的音乐库。 默认情况下,只挂载了 $HOME/.config/netease-cloud-music$HOME/Music/CloudMusic$HOME/Music(只读),其它路径对 container 不可见(docker-compose.yaml)。

    运行

    确保你已安装并配置好了dockerdocker-compose,下载 https://raw.githubusercontent.com/vfreex/docker-netease-cloud-music/master/docker-compose.yaml, 进入下载到的目录,运行xhost +local && docker-compose up -d

    第 1 条附言  ·  2017-07-24 16:44:51 +08:00

    补充:

    1. 启动命令应为xhost +local: && docker-compose up -d,漏了一个冒号。
    2. 如挂载的目录权限错误,请手动修复目录权限:
    sudo chown "$USERNAME":0 "$HOME/.config/netease-cloud-music/" "$HOME/Music/CloudMusic/"
    sudo chmod g=rwX "$HOME/.config/netease-cloud-music/" "$HOME/Music/CloudMusic/"
    
    第 2 条附言  ·  2017-07-24 17:29:53 +08:00
    最新进展:flatpak 快要搞定了
    第 3 条附言  ·  2017-09-16 20:36:48 +08:00
    再次补充:现在只需要 clone 仓库后执行 docker compose up -d 就可以了,不需要上述权限设定了
    15 条回复    2017-09-17 03:46:36 +08:00
    majinjing3
        1
    majinjing3  
       2017-07-24 16:53:49 +08:00 via Android
    我这玩过,用 docker 启动谷歌浏览器,洋葱浏览器
    sunjourney
        2
    sunjourney  
       2017-07-24 18:03:38 +08:00
    厉害了厉害了,docker 跑 GUI 都有方案了
    Betacoefficient
        3
    Betacoefficient  
       2017-07-24 18:09:22 +08:00   ❤️ 1
    你们这些人是要彻底把 docker 弄成虚拟机啊。
    Wichna
        4
    Wichna  
       2017-07-24 19:09:52 +08:00
    已 star
    bsidb
        5
    bsidb  
       2017-07-24 20:49:42 +08:00
    厉害啦! 那以后这样就不用怕有些 GUI 程序是发行版限定的了~ 而且也不用给各个 GUI 程序搞乱七八糟的依赖了。
    期待楼主 Flatpak 能成功!
    ech0x
        6
    ech0x  
       2017-07-24 20:52:56 +08:00 via iPhone
    这个好,可惜配置还是有些复杂,不过比起自己折腾 wine 好多了
    raysonx
        7
    raysonx  
    OP
       2017-07-24 21:04:47 +08:00
    @ech0x 毕竟 Docker 在设计上不是用来跑图形程序的。如果搞出一个 flatpak 版本就方便了,目前已经有进展了,等搞定之后再来更新。
    wm5d8b
        8
    wm5d8b  
       2017-07-25 09:03:13 +08:00
    网易云音乐只支持 deepin 15、Ubuntu 16.04 和 Ubuntu 14.04 ?
    我在 Arch Linux 系的系统上用完全没问题。。
    chenai
        9
    chenai  
       2017-07-25 11:44:44 +08:00 via Android
    厉害了,少年
    zhangneww
        10
    zhangneww  
       2017-07-26 16:27:50 +08:00
    Arch 没问题+1
    ppwangs
        11
    ppwangs  
       2017-07-27 15:36:57 +08:00
    arch 大法好
    Jimrussell
        12
    Jimrussell  
       2017-07-27 21:52:04 +08:00 via Android
    哈哈学习一下,我自己一般用 vagrant 来处理类似的场景。
    whenov
        13
    whenov  
       2017-09-16 20:27:33 +08:00
    @raysonx 楼主的 flatpak 进展怎么样了?
    raysonx
        14
    raysonx  
    OP
       2017-09-16 20:35:17 +08:00 via Android
    @whenov 没有时间搞了。现在 docker 方案已经很完美了
    param
        15
    param  
       2017-09-17 03:46:36 +08:00
    qt 更新了,deepin 不跟进。先是网易云音乐在新 qt 下无法正常显示歌词,现在的情况直接不能用。不过。。用 docker 实在有点大材小用,不怎么优雅。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2723 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:27 · PVG 14:27 · LAX 22:27 · JFK 01:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.