这是一篇在草稿箱里积灰许久的文章,没有发布的原因是之前一直在犹豫要不要配一些例子。前一阵基于 traefik 折腾了一套新的最佳实践,跑了一个多季度,看起来一切都还不错,所以本篇内容就可以拆分成几个小点单独进行发布了。
说起群晖的 Docker ,其实轻度使用的时候,跑个带端口映射的容器还真不错,但是在多个应用进行编排使用的时候,使用的时候还是有一些问题。
Docker 和 compose 版本落后
我们可以从 https://www.synology.cn/zh-cn/releaseNote/Docker
查看到当前支持的 Docker 版本,以及更新记录。
但是一般来说群晖的版本会比 Docker 官方社区低起码一个大版本,有一段时间,DSM 上跑的容器都只能是 version 2
的 docker-compose 配置,缺少一堆指令的支持,直到升级到了 1.1.4 版本的 compose。
查看官方的版本发布记录,不难看出 1.1.4 也是去年的老版本了,不过好在支持到 3.0+ 了,多数指令也能使用了,只要不涉及复杂组网。
1.14.0 (2017-06-19). New features. Compose file version 3.3. Introduced version 3.3 of the docker-compose.yml specification. This version requires to be used ...
这里在实际使用的时候,设置为 3 即可,让编排功能随着编排工具滚动升级。
手动升降 Docker 版本
可能出于对资源占用的敏感,你会想手动选择一个 Docker 版本。
通过翻看群晖应用的管理代码,不难看到群晖软件包的真实下载地址:
https://usdl.synology.com/download/Package/spk/Docker/
将你想安装的版本下载下来之后,配合软件仓库的手动安装功能,就能够实现软件的升降级了(推荐对之前的软件先进行卸载处理)。
另外,如果你想试试交叉编译出最新版本的 Docker ,可以试试下面的工具:
https://github.com/SynoCommunity/spksrc
被替换的日志驱动
在不指定 log
使用 docker-compose
启动程序的时候,你会发现新版本 stdout
原本应该存在的输出内容是空白的,取而代之的是一行警告信息:
WARNING: no logs are available with the 'db' log driver
而这里提到的 db
日志驱动,是为了让我们能够在群晖 Web 管理界面中看到日志而存在的一个程序,如果我们要将日志还原为原本正确的输出行为中,该怎么做呢?
修改 /usr/syno/etc/packages/Docker/dockerd.json
文件,指定日志驱动的类型为 json-file
,然后重启 Docker 即可。
{
"log-driver": "json-file"
}
加速容器获取
同上面的操作一样,还是修改 dockerd.json
文件,不过这里要添加的是 registry-mirrors
这个 key,如果我们既要修改日志输出方式,又要使用三方的仓库镜像,可以这样配置。
{
"registry-mirrors" : [ "http://your-3th-party-mirror" ],
"log-driver": "json-file"
}
如果你信任了你的自签证书的话,那么这里是可以直接配置成你的个人仓库镜像的。
其他
或许应该写个小脚本,提供一键修改群晖应用配置的功能。
–EOF