GeekNote
注册
登录

技术杂谈:对于Docker部署应用的一些想法

这几天因为忙着其他的事情,没有更新NAS折腾日记的系列文章,且同时GeekNote也宕机了几天,总感觉自己把日记写成了教程;加上最近入了暴风的NAS,又重拾VPS建虚拟主机搭建博客,等等忙了许多事情。同时对于用Docker部署应用的方案,让我也思考了好一阵子。

为何选择Docker部署?Docker的利与弊

初期选择Docker部署应用,本来是考虑到了相对不错的系统依赖管理,以及迁移备份方案。所有的应用被封装成一个镜像,在容器中运行,不会影响到现有系统的配置。一切可以以推荐状态运行,同时网上的教程也很多。

但是,理想虽好,现实总是会遇到许多不可避免的问题:

Docker本身的存储稳定性,其实是一个需要深思的问题,包括像是使用Docker来部署数据库,在生产环境中一般也是不推荐的选择。关于迁移与备份,就算真的迁移了环境,实际上我仍然会重新设置应用保持整洁。

我不确定Docker里面的工作机制究竟是什么样子,但是我使用Docker部署BT下载程序,丢进度、识别不到存储的情况依然还是存在的,如果是Nextcloud,就更令人捉摸不定,比如文件系统是否能自动更新,会不会由于占用高导致突然下线等等。网络上的许多NAS Docker教程多数以玩为主,却很少考虑到生产环境下的情况。

OMV NAS系统

另一个原因是OMV NAS系统,在传统的服务器上,自然是按照行业标准来部署;家用环境的NAS系统实际上更加谨慎,OMV5失去了前代丰富的插件系统,导致我不能轻松的使用Web GUI来部署各种第三方应用。

由于想测试一些有意思的应用,我还把原来的小主机改成了基于PVE虚拟化的“私有云计算平台”,作为Application Node,又入手一台暴风播酷云作为NAS使用,则作为Storage Node,但好像并没有真正地解决我的痛点。

有人会说:直接装一个裸Debian不就行了吗?我只能说,裸系统缺少易于使用的管理界面。我当然见过用机架服务器,搭建K8s集群、做持续集成,搭建强大的NAS存储方案,但是这套方案显而易见,并不适合每一个人。

也许不想管理服务器是我的懒癌,不过对于我这样很难吃透Linux的玩家来说,有一个易于维护的可视化界面、即便只有简单的权限、磁盘管理,也比在命令行下摸黑打滚好得多。毕竟谁也不想让自己珍贵的数据,由于“手残”操作导致丢失。

这一切也许用群晖就能解决(无论黑白),不过BTRFS、群晖系统“烧盘”等供应商锁定的现象也是一个不可忽略的问题,目前对我而言,低成本价格、低资源占用的NAS方案是更优选择。不过之前也体验过了DSM 7.0系统,我也有可能改变想法,转投群晖的生态。

工作流

尽管自己本职非程序员(事实上我是一个设计师),但是之前也做过几年多WordPress和论坛的站长,玩过许多的机器和Web面板,从一开始了解到FTP、虚拟主机空间,到入手第一台VPS使用CentOS装宝塔,再到现在流行的LaaS、PaaS、SaaS概念,也有了一些经验。

也由于自己的技术学习路线与现代开发思路关联性较浅,比如我依然不能熟练使用Git与NPM这些管理工具部署,因此我还是会基于传统的虚拟主机方式去建站,不过这已经形成了一种“工作流”,学习一些新的技术,对我反而带来了负担。

换种思路想一下,传统的虚拟主机方式也并没有什么不妥,仍有大部分网站应用依然是基于虚拟主机的结构开发的。对于较为重要的应用,已经有稳定的部署方案,就不必非用自己不熟悉的方式部署。

什么应用适合用Docker部署?

当然,Docker并不是一个鸡肋的花瓶,既然存在,必然有它的意义。我发现也有一些应用,是非常适合用Docker部署管理的:

比如近期流行的开源相册应用 Photoprism 就是基于Docker来开发的,而且可以工作在只读模式下,就像一个镜子一样。同理还有Navidrome开源音乐库、书库应用等。这种对系统依赖控制较多、但是对文件系统更改不敏感/几乎只读的应用,就可以使用Docker来部署、管理。

Jellyfin也可以考虑使用Docker部署,只是关于宿主硬件控制的部分可能稍有差别。宿主部署的Jellyfin,拥有能够直接操作主机关机,或者无痛挂载磁盘目录、以及直接配置硬件加速的特点。这些在Docker版本中就稍显麻烦些,但有些工具利用Docker保种可能容易些。


以上就是我对关于Docker部署应用的一些想法,本人非专业程序开发者,熬夜写作,所以这篇文章依然还是写的比较杂乱、主观性较大,如果有一些不对的地方,还请指正谅解。:)

1
Creative Designer 🖌️ 创意设计师
登录后评论
评论 0
社区准则 博客 联系 反馈 状态
主题