文章目录
- 前言
- 一、问题:无限重启崩溃
- 尝试:权限不足?
- 解决:用Docker-Compose安装并挂载数据卷
- 二、问题:镜像磁盘默认挂载在C盘
- 尝试:通过修改Docker修改镜像磁盘到D盘
- 解决:通过修改docker的settings文件
- 五、打包自己的镜像
- 总结
前言
问题:在windows server中安装遇到了安装后启动后不到一分钟就崩溃的问题,后面查看log发现可能是挂载到本地目录时出现问题,疑似本地目录权限不足导致挂载出问题。可是又不能不挂载,要改镜像中的配置需要先启动容器再改配置。
下面是以我部署过程发现问题,解决问题的思路为阶段讲解,大家可以当故事或者乐子看。
有道是当局者迷,旁观者清,有时我们遇到问题可能会绕几个弯才解决问题。不久后再回忆(再做一遍的时候)又会感叹自己当时的愚笨,明明能一步到位。其实这在科学上也并无道理,当一个人去思考问题的时候大脑就会形成不同的回路,当我们遇到问题解决问题后再都思考相似的问题,就会发现能够快速的处理问题了。
爱因斯坦和我们的区别也就是神经元密度更大,思考一个很难的问题时能快速反应,做出相应的推算、想法。
一、问题:无限重启崩溃
尝试:权限不足?
首先考虑权限问题,第一个就是怀疑远程操作的原因导致权限不足。使用windows远程桌面(右键windows图标-运行-填入mstsc )以及实操发现没问题。(错怪远程软件了,毕竟都2024年了)
那就去给文件夹赋予当前用户权限,如果这步成功了就可以返回之前的文章手把手教你用Docker搭建gitlab。
解决:用Docker-Compose安装并挂载数据卷
我在当时排除了远程链接的问题后就开始寻找其他方法,发现了另一种安装方式,用yml文件提前设置配置再安装。
Docker-Compose是高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。
利用这种方法成功安装后,如果配置中挂载在本地还是有问题,但天无绝人之路。通过创建数据卷的方式进行了挂载。
docker volume create xxx
docker在容器中管理数据主要有三种方式:
- 数据卷(Volumes)
- 挂载主机目录(Bind mounts)
- 数据卷容器(Data Volume Containers)
后面遇到了ssh配置没开导致下拉上传失败的问题,又将sshd_config文件映射到本地,最后启动后重新执行ssh restart,问题得以解决。(由此看来Docker-Compose并没有直接使用docker安装方便)
二、问题:镜像磁盘默认挂载在C盘
尝试:通过修改Docker修改镜像磁盘到D盘
C盘空间不大,挂载后想修改Disk image location,修改到D盘后Apply,但是又会莫名其妙的恢复,一查发现是需要使用WSL的方式使用docker才能修改,而且修改后之前的镜像会清空,注意存档。
解决:通过修改docker的settings文件
奈何不能使用,我们去C:\Users\Administrator\AppData\Roaming\Docker下找到settings.json文件,修改其中的dataFolder
成功了,不容易。
五、打包自己的镜像
停止镜像
docker stop d09e2dfcf93
打包保存到当前目录
docker commit d09e2dfcf93 my-template-image
docker save my-template-image > my-template-image.tar
导入镜像
docker load -i my-template-image.tar
查看
docker images
总结
如果是运维人员,学习过系统化的内容,他们可能很容易解决这些小问题。而Unity程序员在自己布置这些问题时,仍然需要记录和整理,作为一种自我提升和学习的方式,共勉之。