docker-ce 在windows10下使用volume的注意事项

Posted on 2020-03-23 22:06  玉巾  阅读(5290)  评论(0编辑  收藏  举报

最近想搭建一套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,就可以达到持久化数据的目的了

 

例:

docker volume create gitlab-data
docker run -d   --volume  gitlab-data:/var/opt/gitlab   gitlab-ce

 

 

 

 

然后又带来了一个新问题:

如果需要访问挂载的文件夹,怎么访问?怎么备份这些文件?

直接给出方法:

 

# 随便拉一个镜像,我比较喜欢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

 

Copyright © 2024 玉巾
Powered by .NET 8.0 on Kubernetes