分类: 互联网时代中年男性

  • 在威联通 QTS 的 Container Station 上使用类似虚拟机的桥接网络

    日常使用时,我们可以注意到:在创建容器时,Web UI 上其实是允许容器使用虚拟交换机网络而非 NAT 的。这个选项的效果类似于虚拟机平台的虚拟交换机(或者有些时候称之为桥接网络),和直接使用 network_mode: "bridge" 有显著区别。

    出于好奇,索性这样创建一个容器,然后直接 SSH 到机器上面看看生成的东西是啥样的。这个容器的实现也很直接,SSH 上去可以直接使用现成的 Docker 的命令行客户端,所以直接看看 Docker 的网络。

    可以注意到这里使用了一个定制的 Docker 网络驱动。这下就明白了,然后我们可以来搜一下怎么在 Docker Compose 里调用它。

    也比较顺利,直接搜到了官方的文档:Qnet — Container Station documentation (qnap-dev.github.io),这里面给出了示例:

    那么直接复制粘贴就可以了。不过也发现一个问题,重新创建应用会导致 MAC 变化,DHCP 服务器上配置的静态分配不生效。此时可以直接给 services.qnet_dhcp 下设置一个 mac_address 属性来指定 MAC 地址,就不会有问题了。

    后续

    对于熟悉 Docker 的朋友们,可能会发现这个其实类似于 Docker 本身提供的 macvlan 驱动。我在体验了一段时间 qnet 驱动后,因为其缺少 IPv6 实现,也逐步迁移到了 macvlan。因为对性能没有特别要求,所以没有明显感知到区别,只是发现使用 macvlan 的话,网络设置中会存在警告,还没有时间处理。

    引用

    Qnet — Container Station documentation (qnap-dev.github.io)

  • 威联通 QTS 启动 Jellyfin,使用 Container Station 容器工作站

    左侧栏新建“应用程序”,下面给出可用的 docker-compose.yml

    version: '3.5'
    services:
      jellyfin:
        image: jellyfin/jellyfin
        container_name: jellyfin
        user: 0:0
        network_mode: 'host'
        volumes:
          - /share/Container/jellyfin/config:/config
          - /share/Container/jellyfin/cache:/cache
          - /share/Media:/mnt/media:ro
        devices:
          - /dev/dri/renderD128:/dev/dri/renderD128
        restart: 'unless-stopped'
        environment:
          - http_proxy=http://<proxy-host>:<proxy-port>
          - https_proxy=http://<proxy-host>:<proxy-port>
          - HEALTHCHECK_URL=http://<qts/jellyfin-host>:8096/health
        extra_hosts:
          - "host.docker.internal:host-gateway"

    基于 Jellyfin 官方给出的 yml 修改而来,挂载设备以支持硬件解码。由于 QTS 上该设备所有者为 0:0,且权限为 600,无法通过添加 –group-add 参数来让同组不同用户使用该设备,因此只能让这个容器按 root:root 启动了,可能有些许风险。

    添加环境变量以加速元数据刷新,修改健康检查地址使之状态正常。

    引用

    Container | Jellyfin

    Intel GPU | Jellyfin

目录

目录