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

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

windwos处理docker挂载volume问题

最近想搭建一套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

 

版权声明:本文为fxdjjn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fxdjjn/p/12555522.html