docker扩容

早些时候,由于开发协作需要,尝试搭建一套dzzoffice,onlyoffice,mysql组成的内部网盘工具,主要用于文档类共享和在线编辑。用到现在,其实还蛮好用的,不过呢,运维的工作量不小。
起初搭建的时候,也是在网上找的教程,参考来部署的。本来是打算按照组建来单独部署和连接,但后来发现,对环境的兼容性太差,有很多问题要解决。后来索性就通过docker来部署。真的容易了很多,镜像下载后安装,端口映射,启动,很棒。但是呢,对docker并没有很多使用以及运维经验,完全就是边学边干。后来除了安全漏洞需要升级版本外,没有遇到别的问题。
后来呢,很多项目组也用到了这个网盘工具,容器默认的10G空间就不够了,导致文件无法上传。只好扩容,找了一圈,但多数都不是完整版本。我觉得有必要这里记录下过程,方便后续参考。
通过docker ps -a 命令,找到要扩容的容器,通过dmsetup 命令,找到对应的虚拟磁盘,通过suspend/reload/resume命令,使扩容后的操作生效。当然,这里边还涉及到扇区的换算公式,直接百度即可。前面一切顺利,但是呢,在配置pool大小的时候,始终无法resume成功,提示invalid arguments。容器以及创建的虚拟目录都存在,但就是无法挂载。后来实在没辙,就重启了docker所在的宿主机。重启后,docker可以正常启动,但是要启动某个容器,发现起不来了。这个时候就把reload/resume命令又重新执行了一遍,mysql和onlyoffice可以起来了,dzzoffice死活起不来。而且每次提示的错误信息还不一致,一会是期望的和实际的磁盘空间不匹配,一会是端口被占用。不匹配的问题,其实再执行一次 reload/resume命令即可,端口被占用的问题,用netstat命令看了也没有被占用,多试了几次后,居然可以了。
事后发现,1是在创建容器的时候,没有考虑到后续扩容的事 2是动态扩容的话,会导致容器重启失败的情况 3是对docker的原理不清楚 4是没有及时绑定容器内和宿主机的磁盘目录,导致容器无法启动后数据丢失的风险。
对于数据备份,临时方案是定期通过docker cp 命令,手动备份。一种是操作系统级别建立快照,但是无法解决容器损坏的情况。

-------------本文结束感谢您的阅读-------------