最近想搭建一套CI/CD环境尝试一下,因为手里云服务太小了(1C1G),撑不起来gitlab和jenkins。恰巧年前配了台高配版的windows机器,就想在家里的机器上通过docker装gitlab和jenkins。
但是经过尝试,发现docker在windows10下面使用有很多坑,从网上帖子看,好像这个问题短期之内修复不了(涉及到文件系统了),故总结,并将踩坑经验分享给大家
环境:win10专业版,使用hyper V支持docker,docker desktop community 2.2.0.4(43472)
docker挂载windows目录到volume有问题:
如果是只读的话可以,docker可以读取文件
如果需要写入,如新建文件等,应用会爆出权限不符等提示信息,总之就是不能写入
解决办法:
使用命令docker volume create VOLUME-NAME创建一个volume,并直接使用这个volume,就可以达到持久化数据的目的了
例:
然后又带来了一个新问题:
如果需要访问挂载的文件夹,怎么访问?怎么备份这些文件?
直接给出方法:
# 随便拉一个镜像,我比较喜欢centos,ubuntu等亦可
docker pull centos
# 创建一个root镜像,与宿主机相通
# 关闭这个docker,将不会残留任何容器信息
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host centos /bin/bash
# 切换主机环境
chroot /host
# 打包镜像文件到备份文件夹
# 我之前在docker desktop共享了E盘文件夹,被挂载到了host_mnt目录下面,所以可以直接将tar打包到备份目录下,当然不建议使用中文目录
# /host_mnt/e/dockerdata/backup/是windows e盘预先创建好一个用于备份的文件夹
# /var/lib/docker/volumes是使用docker volume create创建出来的目录位置,在这里可以看到所有的volume
# gitlab-data是创建的volume名称
tar -zcvf /host_mnt/e/dockerdata/backup/gitlabdata.tar.gz /var/lib/docker/volumes/gitlab-data
执行这条命令之后,你会在你的windows的目录E:\dockerdata\backup下发现gitlabdata.tar.gz这个备份文件
如果数据复位,可考虑逆操作这条tar指令
参考:
https://blog.csdn.net/weixin_30677475/article/details/99035126