zoukankan      html  css  js  c++  java
  • docker-ce 在windows10下使用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:dockerdataackup下发现gitlabdata.tar.gz这个备份文件

    如果数据复位,可考虑逆操作这条tar指令

    参考:

    https://blog.csdn.net/weixin_30677475/article/details/99035126

  • 相关阅读:
    ThinkPHP
    ThinkPHP
    静态化
    静态化
    静态化
    设计模式
    sublime
    静态化
    OPTIMIZE TABLE 小解
    information_schema系列八(事物,锁)
  • 原文地址:https://www.cnblogs.com/fxdjjn/p/12555522.html
Copyright © 2011-2022 走看看