将平时用到的服务从虚拟机迁移到Docker运行

以前觉得虚拟机稳定点,操作简单,就没有把虚拟机的服务迁移到docker,随着对docker的理解,觉得还是这种进程级的虚拟环境干净,轻量级。先拿Gitlab来做个列子迁移

要想Gitlab的数据能持久的保存,备份,还原,所以必须能把数据挂载到windows的目录下,docker下执行, 端口映射第一个端口是宿主机端口,后面的容器里面的端口,SSH端口默认22,后面要通过Git 下载代码,默认是22端口,这里就不做改变了,方便点。主机设置成 dalinsoft.com这样可以修改本地的hosts文件来做映射

纠正一下,如果这里的Docker是手工安装在WSL的Linux下,是三层关系,Windows --->WSL(Linux) --->Docker(Linux) ,Docker 服务应该不能直接把数据挂载在Windows目录下,

如果Docker是通过Docker for windows 客户端来安装在Windows下的,那么是可以把数据直接挂载在Windows 目录下的(虽然是三层关系,单Docker for Windows这个客户端做了很多中间工作)

//有docker windows 客户端的情况下执行的命令,如果没安装docker for windows 客户端,挂在的识别是需要加 /mnt/盘符/文件夹
docker run -d --hostname dalinsoft.com --publish 443:443 --publish 8080:80 --publish 22:22 --name gitlab --restart always --volume F:/gitlab/config:/etc/gitlab --volume F:/gitlab/logs:/var/log/gitlab --volume F:/gitlab/data:/var/opt/gitlab --privileged=true gitlab/gitlab-ce:13.7.4-ce.0

这样Gitlab上的项目的保存地址就在,粗拷贝就直接拷贝文件夹吧,但是这种还原方式没试过,还是下面通过具体的命令执行吧

 

Gitlab 备份,进入跑Gitlab 的容器

先进入WSL->Linux->Docker->操作Gitlab:

wsl -l -v //列出wsl有哪些linux 和wsl版本

wsl -d Ubuntu //进入Linux系统

 

 看有哪些镜像 docker ps

 

 

docker exec -it container-name  /bin/bash
gitlab-rake gitlab:backup:create

 在备份过程中出现这个错误提示,就是说你的Gitlab可能加了些用户的设置,需要手动备份这部分数据,这部分不在这次备份范围内

 

 

 

 

 

Gitlab 还原

如果哪天我们需要还原项目,还原的时候注意需要安装和以前一样版本的Gitlab,将备份好的tar包移动到/var/opt/gitlab/backups,执行命令gitlab-rake gitlab:backup:restore BACKUP=1659804622_2022_08_06_10.8.2(backup后面的为备份文件)

首先要手动去windows 文件夹下删除干净

 

 

gitlab-rake gitlab:backup:restore BACKUP=1659804622_2022_08_06_10.8.2 //不是全名,没有后缀,且gitlab在正常运行状态,遇到提示填写 yes.

 

 

 如果Gitlab备份时候的版本和还原时候的版本不一致会导致还原不成功

 所以我们用哪个Gitlab的Image必须备份好,要不又还原包也还原不了,所以引出下面一个问题

Docker里面怎么导出image到本地呢?这样备份起来就不用每次网上下载(还不一定下载的到)

docker save gitlab/gitlab-ce:13.7.4-ce.0 > c:\gitlab-ce_13.7.4.tar

 

 

 反过来Docker 怎么导入本地的Image 

docker load < gitlab-ce_13.7.4.tar 

 Docker 删除本地Image 

  有时候我们下载了一个镜像,但是镜像不完美,我们给镜像安装了些命令比如sudo,再又修改了文件的权限解决一些bug,那么我们就想把这个新的容器作为镜像来保存,删除原来的镜像,再导入这个修改后的镜像

docker rmi imageId
docker save gitlab/gitlab-ce:13.7.4-ce.0 > /mnt/f/gitlab-ce_13.7.4.tar

 

还原后的项目代码路径

 登录Gitlab后发现项目都还原了,用其中一个项目做演示。

 

 

   我们目前还不能通过dalinsoft.com这个前缀访问到容器里面的主机,但是手动修改成git@127.0.0.1:client/xxx.git 还是可以下载的

   修改hosts 文件后能下载了

   

  拉去代码这块可以详见 另外一篇文章的后半部分  Windows 10 下安装 Docker 替代虚拟机 - LearningAlbum - 博客园 (cnblogs.com)

 

posted @ 2022-08-07 01:22  LearningAlbum  阅读(874)  评论(0编辑  收藏  举报