套件不求人,威联通Docker Compose体验及配置编写

2020-10-05 14:11:57 62点赞 412收藏 41评论

创作立场声明:自用TS-451D体验心得,与大家分享一下。

前言

在日常工作与生活中,对于那些重复、冗杂的任务,我们常常会找寻规律,制作模板。例如excel算账,有了表格模板,只需要填入数据,即可帮助我们计算;但是在NAS使用中,我发现本来很简洁优雅的Docker,被一些教程弄得啰嗦无比。一个简单的软件安装,弄一大堆图文步骤,很多同伴们看了教程就头痛,只想找个现成的套件安装。实际上docker优点就在于简易分发和快速部署,往往docker-hub上作者早就写好了一键命令安装,却很多人不去看,以至于把简单的事情搞复杂了。

当然一个个安装软件,其实也不算高效,而Docker Compose 则让你先写好模板,然后批量运行多个Docker程序组的利器,有了它,你就能提前设定好参数,轻松把所有要用的软件装齐,并指定不同容器间的依赖关系。相信用过unraid系统的同志,可能对里面的APPS商店有些印象,其实就是一个docker的模板库。威联通也有类似的功能,但是并没有形成一套完善的商店生态?可能因为它有自己的应用商店,不想为docker添砖加瓦了。不过还好,威联通改良了Docker Compose的使用体验,让你也能通过预制模板部署应用。

威联通预制的模板化APP威联通预制的模板化APP

一、我该怎么做?

你只需做两件事:1、编辑docker-compose.yml配置 ;2、运行docker-compose up。

别担心,你不需要像linux用户那样用ssh连接、sftp上传文件,也不用在终端中敲击命令,我发现威联通已把Docker Compose放到了网页界面,你只需复制粘贴,然后在线点一下“创建”,即可一键完成部署。下面看图:

打开Container Station,选择“创建应用程序”打开Container Station,选择“创建应用程序”

右键粘贴需要的yaml配置,然后点击“创建”右键粘贴需要的yaml配置,然后点击“创建”

好了,按照上面两图的步骤,你就能等待docker应用自行部署了,非常简单吧!部署完成的应用会显示为三个方块相叠的图标,状态为“APP”,如果有啥需要修改的地方,请点击右边倒数第二个按钮,重新修改yaml配置。

我们刚才部署的程序会显示为APP我们刚才部署的程序会显示为APP

那么最重要的“yaml配置”怎么得到?下面我来简单介绍一下。

二、如何得到yaml配置

1、打开docker-hub网站

网址:https://hub.docker.com/ ,这里汇聚了全球各种docker镜像,网上很多著名开源项目都在此发布镜像以供安装。我们在左上角输入需要的软件名,例如wordpress、jellyfin,按下回车键搜索。

左上角输入需要搜索的软件左上角输入需要搜索的软件

注意右边的星标数,越多代表镜像越受欢迎注意右边的星标数,越多代表镜像越受欢迎

2、查找yaml配置

点开需要的镜像后,往下翻网页,一般中后部分会有一段docker-compose的代码,这就是我们需要复制的yaml,有的官方介绍里没有这个,可以找找第三方(例如linuxserver)制作的docker介绍。

wordpresswordpress

jellyfinjellyfin

这些配置文件很好懂吧,一眼就能看出我们需要的修改的东西,我也没学过docker-compose,是个纯新手,但是一看它就明白了。

注:许多大型项目都会给出Docker Compose的配置,但是个人开发者往往还是喜欢用命令行。如果你在项目页面只看到了docker run开头的代码,请参考我以前的一篇文章:

NAS部署方法,快速安装jellyfin,filebrowser并开启硬解转码小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外50金币奖励。新人发布首篇文章可在什么值得买APP“我的”-“我的任务”-“新手任务”-“发布一篇社区文章”额外领取50金币以前一直是自己组装机器,用Windows加虚拟机玩各种系统,但体验了黑群晖后,心中入正洗白的想法却越发强烈,要手机anjsfcy| 63 评论64 收藏646查看详情

3、语法简介

dockers compose 需要一个定义docker服务、 网络和数据卷的 YAML 语法文件 ,开头用version: 'X.X' 定义语法版本。

image: 是我们需要拉取的docker镜像,这次用过下次部署时就不需要重新下载了,很节约时间。

container_name:是容器名,为容器指定一个名称,而不是使用默认的名称。

environment:是环境变量,非常重要,一般我们设置权限、时区、数据库、用户密码都是依靠环境变量。 有了它,你就能解放自己的鼠标,不用每次部署后一个个点击和输入,而是靠docker-compose自动设置。

volumes:是数据文件存放位置,冒号前为本地路径,冒号后为容器内路径。 本地路径可以用一个名字代替,在威联通Container Station中的存储空间里可以看到它,也可以写成绝对路径,例如/share/Container/XXX。

Container Station中的存储空间Container Station中的存储空间

ports:是网络端口,冒号前是我们web访问的实际端口,冒号后是容器内的端口。

devices:主要是挂载硬件设备,例如jellyfin硬件转码就会用到/dev/dri:/dev/dri。

depends_on:解决启动顺序的问题,一般容器启动的顺序是有要求的,如果直接从上到下启动,必然会因为容器依赖问题而启动失败,使用depends_on命令可以让数据库等重要容器先运行,免得运行时出错。

extra_hosts:就是往 /etc/hosts 文件中添加一些记录,可以指定主机名对应的ip,也可以更改网站对应的ip,例如我们刮削电影时,往往会被dns污染,导致刮削失败,这时可以直接更改host解决。

三、实战演练

1、多个依赖项(seafile)。

当我们使用私有网盘时,例如kodbox,seafile时,如果想提高性能,得先设置用户名和密码,数据库(mysql地址、密码),缓存服务这些东西,如果依次安装数据库、缓存,然后又在网盘程序中设置数据、缓存,是不是感觉好麻烦?能不能直接先设置好这些东西,安装后直接用呢?当然可以,下面配置参考了seafile官方文档和威联通上实际情况编写:

version: '2.0'

services:

db:

image: mariadb

container_name: seafile-mysql

environment:

- MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service.

- MYSQL_LOG_CONSOLE=true

volumes:

- /share/Container/seafile/db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.

networks:

- seafile-net

memcached:

image: memcached

container_name: seafile-memcached

entrypoint: memcached -m 256

networks:

- seafile-net

seafile:

image: seafileltd/seafile-mc:latest

container_name: seafile

ports:

- "12401:80"

# - "12402:443" # If https is enabled, cancel the comment.

volumes:

- /share/Container/seafile/data:/shared # Requested, specifies the path to Seafile data persistent store.

environment:

- DB_HOST=db

- DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service.

- TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.

- SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.

- SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'.

- SEAFILE_SERVER_LETSENCRYPT=false # Whether use letsencrypt to generate cert.

- SEAFILE_SERVER_HOSTNAME=127.0.0.1 # Specifies your host name.

depends_on:

- db

- memcached

networks:

- seafile-net

networks:

seafile-net:

我们把上面的配置文件粘贴进去,点击创建,过一会儿seafile就安装好了。数据库和缓存服务也不需要你去单独设置,甚至用户名密码也提前设置好了:用户 me@example.com 密码asecret,你也可以先改好配置文件再粘贴。

用户名密码等数据,提前就能设置好用户名密码等数据,提前就能设置好

整体显示为APP,里面3个容器分别是主程序、数据库、缓存整体显示为APP,里面3个容器分别是主程序、数据库、缓存

打开后直接就可以登录啦打开后直接就可以登录啦

2、影音一条龙

我们在建立自己的影音库时,一般需要3类软件:管理、刮削、展示,由于威联通自带的文件浏览器有些电影格式打不开,我一般使用 filebrowser(荒野无灯大佬的镜像,支持硬解转码)浏览管理电影,tinymediamanager刮削电影,jellyfin展示电影海报墙以及转码播放。以前我是一个个安装的,而且安装好后,修改挂载路径和参数很麻烦,但是通过docker compse,不仅一次性装好这三个软件,更重要的是直接解决了硬解转码(我挂载了dri,并以管理员身份运行jellyfin),和刮削失败的问题(我为tinymediamanager添加了两条host记录,不翻墙也能连上tmdb服务器了),如果有啥要改动的地方,也能在网页端一键修改。yaml配置如下:

version: '3'

services:

jellyfin:

image: linuxserver/jellyfin

container_name: jellyfin

environment:

- PUID=0

- PGID=0

- TZ=Asia/Shanghai

volumes:

- /share/Container/jellyfin:/config

- /share:/media

ports:

- 12501:8096

- 12502:8920

devices:

- /dev/dri:/dev/dri

extra_hosts:

- "api.themoviedb.org:13.249.146.88"

- "image.themoviedb.org:104.16.61.155"

restart: always

filebrowser:

image: 80x86/filebrowser:amd64

container_name: filebrowser

environment:

- PUID=0

- PGID=0

- TZ=Asia/Shanghai

volumes:

- /share:/myfiles

ports:

- 12503:8082

devices:

- /dev/dri:/dev/dri

restart: always

tinymediamanager:

image: romancin/tinymediamanager:latest

container_name: tinymediamanager

environment:

- GROUP_ID=0

- USER_ID=0

- TZ=Asia/Shanghai

- ENABLE_CJK_FONT=1

volumes:

- /share/Container/tinymediamanager/config:/config

- /share:/media

ports:

- 12504:5800

- 12505:5900

extra_hosts:

- "api.themoviedb.org:13.249.146.88"

- "image.themoviedb.org:104.16.61.155"

restart: always

也是一样的方法,先粘贴yaml配置,然后点击“创建”,过一会儿3个软件都装好了,是不是很快!

秒装3个软件:filebrowser、tinymediamanager、jellyfin秒装3个软件:filebrowser、tinymediamanager、jellyfin

jellyfin正常开启硬解jellyfin正常开启硬解

在线运行tinymediamanager,能成功刮削电影在线运行tinymediamanager,能成功刮削电影

总结

一直以来,NAS系统都在扩展自己的领域边界,一方面建立应用商店,打造自己的生态;一方面也在引入企业级功能,并将其包装到直观的web界面中,最著名的例子就是Docker。商店做得最好的无疑是群晖,各种第三方套件都有,而将docker包装得较好的是unraid(每个容器都能按模板轻松设置,安装好后还有图标显示)。

威联通则是多头押注,1、有官方应用商店,但一些套件介绍不去汉化,一些常用套件缺失,得靠第三方qnapclub。2、有docker+lxc环境,但功能似乎有待改进,例如安装好后不能修改挂载路径。3、有Docker Compose可导入模板,但是自带的模板只有几个,似乎并不打算多做点模板。

我希望明年再次打开Container Station时,里面能提供各色docker模板一键安装,而不是现在这样藏在角落里,等用户慢慢去探索用法。其实只要官方持续更新预制的compose,并像unraid那样附带图标,社区用户也能提供自制模板,那么威联通的docker就能变得简单易用,成为系统一大特色。

展开 收起
41评论

  • 精彩
  • 最新
  • 感谢分享!compose很好,唯一不好的地方在于小白的学习成本太高。

    校验提示文案

    提交
    同感 [欢呼] ,docker compose很好!主要是好用,只要手头有配置文件,那么马上就可以部署成功,后期修改也方便,用起来真是倍爽儿 [棒棒哒] 。但docker compose也难,难在自己去定制yaml语句,不断琢磨各个参数,不断试错改良,所以我建议官方多做点模板出来,那肯定能方便很多用户。

    校验提示文案

    提交
    其实很多docker都在使用的说明写了配置,只要复制黏贴,很多人都只知道看教程点安装,而没去看使用说明,问题一来都不知道咋办

    校验提示文案

    提交
    收起所有回复
  • 请问yaml配置的缩进怎么修改?文章里的没法直接用?

    校验提示文案

    提交
    我写文章时是多次实测无误后才粘贴过来的,但是手机上看了一下,所有的缩进空格都被吞了 [皱眉] ,不过这些空格数目都是固定好的,你可以打开创建窗口左下角的示例看一看。然后对照改下缩进即可。

    校验提示文案

    提交
    收起所有回复
  • 看评论才发现不能直接粘贴复制。缺好多空格。 [内伤] 第一次弄,还好照着例子来终于成功了

    校验提示文案

    提交
    恭喜成功 [高兴] ,什么值得买为了统一排版,把段前空格全删除了,我也没办法。所以还是得去docker hub上找官方页面上的compose配置修改来用,另外威联通本身也有模板可供参考。。

    校验提示文案

    提交
    软件更新时,是不是还要删除后重新下载。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • ts551怎么样 1600好像挺香的有点想买

    校验提示文案

    提交
    ts551性价比看起来还可以,就是CPU老了。如果对硬解转码要求高,建议买今年新出来的机型,例如ts451d,ds920+,ts453d这些。

    校验提示文案

    提交
    收起所有回复
  • 我用docker装了tinymediamanager ,但是显示不了中文,都变成了方块

    校验提示文案

    提交
    那你肯定没用我的yaml配置安装 [得意] ,文中有一段环境变量:- ENABLE_CJK_FONT=1,这个能开启对中日韩字体的支持。

    校验提示文案

    提交
    用了,只是不知道要选择文泉逸字体才能显示。 还有不能用输入法打字这个能解决吗?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • @njsfcy 你好,我创建成功没有打开地址是怎么回事?那个小图标看不到

    校验提示文案

    提交
    有时候网址图标会显示不出来,但是过一会儿就有了。你可使用nas的ip:12501,ip:12503,ip:12504,来打开这3个软件。yaml配置文件中能看到端口号。

    校验提示文案

    提交
    谢谢,已经打开了

    校验提示文案

    提交
    收起所有回复
  • 请问filebrowser的登录用户名,密码,passcode是什么?

    校验提示文案

    提交
    admin

    校验提示文案

    提交
    收起所有回复
  • 感谢分享!因为ipv6外网访问的原因,需要采用host网络模式,yaml该如何修改配置?

    校验提示文案

    提交
    network_mode: "host"

    校验提示文案

    提交
    收起所有回复
  • 您那个三件套截图里有个改,是要改什么内容?

    校验提示文案

    提交
    如果要修改挂载路径或端口或其它参数,可以点击那个按钮直接修改。

    校验提示文案

    提交
    收起所有回复
  • 好高级 [观察] [观察] 学习

    校验提示文案

    提交
  • 这才是硬货啊

    校验提示文案

    提交
  • [喜极而泣] 需要先去学习下yaml语法么?

    校验提示文案

    提交
  • [高兴] 能不能把示例的两个用word之类的文件上传到网盘呀

    校验提示文案

    提交
  • 先赏后mark

    校验提示文案

    提交
  • 影音库安装一条龙,filebrowser、tinymediamanager、jellyfin一次性搞定,非常感谢,mark备用

    校验提示文案

    提交
  • 学习了,这个真不错

    校验提示文案

    提交
  • 楼主求seafile的yaml,我删除了一些空格格式,最后还是验证错误

    校验提示文案

    提交
    我也遇到了,最后去官网看了下seafile的yml文件,可能是mariadb没有选版本号。去看看

    校验提示文案

    提交
    我也遇到了,最后去官网看了下seafile的yml文件,可能是mariadb没有选版本号。

    校验提示文案

    提交
    收起所有回复
  • 不知道这个应该怎么更新 [小怒] [小怒] [小怒]

    校验提示文案

    提交
    应该是很简单的 我之前看有人说你只需要改下配置文件里面镜像的版本号他系统就会自动更新。。我之前是用watchtower,但是现在不能用了

    校验提示文案

    提交
    收起所有回复
  • 如何用NAS的 seafile 与电脑的seafile同步呢

    校验提示文案

    提交
    NAS上安装的是服务器,电脑上安装客户端即可

    校验提示文案

    提交
    收起所有回复
  • 大神,请教一下,按照你的方法装了影音3件套之后,开启硬解,在播放视频的时候总显示客户端与媒体不兼容,服务器未发送兼容的媒体格式,关闭硬解就能播放,到底是哪条命令出错了?还是漏了什么?

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
412
扫一下,分享更方便,购买更轻松