zoukankan      html  css  js  c++  java
  • 仓库 数据卷迁移

    我用的是daocloud的加速器  免费注册的

    docker login daocloud.io

    账号:密码 登录即可

    docker search mysql

    可以搜索库内关于 mysql的镜像

    docker pull  mysql

    将远端库内的mysql镜像加载到本地的库中 默认的tag 是latest

    docker tag test/ubuntu:v1.0  ubuntu:12.08

    更改本地镜像库的的tag和repository     test/ubuntu:v1.0(要更改的目标)       ubuntu:12.08(更改后的结果)他们共享一个ID

     创建私有仓库没懂,回头再看

    数据管理 在使用docker的过程中,需要查看容器内的英语产生的数据,或者需要备份数据,再或者多个容器的数据共享。这必然涉及书籍管理

    数据卷 是一个可供容器使用的特殊目录,特点

    多个容器可以共享,数据卷的修改可以立马生效,数据卷更新不影响容器,卷会一直存在直到没有容器再使用

    创建一个数据卷

     如下为容器添加一个数据卷,并将容器名改为data。这个数据卷在容器里的目录是/opt/data

    [root@localhost ~]# docker images
     REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
     docker.io/ubuntu    latest              0ef2e08ed3fa        2 weeks ago         130 MB
     
    [root@localhost ~]# docker run --name data -v /opt/data -t -i docker.io/ubuntu /bin/bash
     root@2b9aebcf6ce8:/# cd /opt/data/
     root@2b9aebcf6ce8:/opt/data# ls
     root@2b9aebcf6ce8:/opt/data# echo "123" > 123
     root@2b9aebcf6ce8:/opt/data# echo "123123" > 123123
     root@2b9aebcf6ce8:/opt/data# ls
     123  123123
     
    [root@localhost volumes]# docker ps
     CONTAINER ID        IMAGE               COMMAND               CREATED               STATUS              PORTS                     NAMES
     2b9aebcf6ce8        docker.io/ubuntu    "/bin/bash"           49 seconds ago      Up 48   seconds                                 data
     
    在宿主机上,查看对应上面的那个数据卷的目录路径:
    [root@localhost ~]# docker inspect data|grep /var/lib/docker/volumes
                    "Source""/var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data",
    [root@localhost ~]# ls /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data
     123  123123
    [root@localhost ~]# echo "asdhfjashdfjk" >> /var/lib/docker/volumes/89d6562b9c1fe10dd21707cb697a5d481b3c1b000a69b762f540fa826a16972a/_data/123
    [root@localhost ~]#
     
    root@2b9aebcf6ce8:/opt/data# ls
     123  123123
    root@2b9aebcf6ce8:/opt/data# cat 123
     123
    asdhfjashdfj

     创建一个数据卷容器dbdata    

     docker run -it -v /dbdata --name dbdata ubuntu

      这条命令的意思是将数据卷挂载到 ubuntu容器内的/dbdata目录下

     docker run -it --volumes-from  dbdata --name db1 ubuntu

     docker run -it --volumes-from  dbdata --name db2 ubuntu

    将dbdata数据卷共享于三个容器 一个内容改变其他的也将改变 ,数据同步

    数据备份

    docker run --rm --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/dbdata.tar  /dbdata

    启动一个新的容器并且从dbdata容器中挂载卷,然后挂载当前目录到容器中为backup,并备份dbdata卷中所有的数据为dbdata.tar,执行完成之后删除容器--rm,此时备份就在当前的目录下,名为dbdata.tar
    注意:后面的/test是数据卷的目录路径(即数据卷创建时在容器里的路径)
    docker run -t -i -v /var/volume1 -v /var/volume2 --name wang docker.io/centos /bin/bash
    创建一个数据卷 并挂载两个目录
    为了利用数据卷容器备份,使用--volumes-from标记来创建一个加载wang容器卷的容器,并从主机挂载当前目录到容器的/backup目录。并备份wang卷中的数据,执行完成之后删除容器--rm,此时备份就在当前的目录下了。
    docker run -i -t --rm --volumes-from wang -v $(pwd):/backup ubuntu:latest tar cvf /backup/backup1.tar /var/volume1
    docker run -i -t --rm --volumes-from wang -v $(pwd):/backup ubuntu:latest tar cvf /backup/backup2.tar /var/volume2
    简而言之就是先创建一个容器,并挂载要备份的容器数据卷,再挂载数据卷(pwd):/backup目录到容器/bakcup,在容器中执行备份/data目录到/backup,也就是备份到宿主机$(pwd):/backup目录
    备份命令
    run -i -t --rm --volumes-from wang -v $(pwd):/backup ubuntu:latest tar cvf /backup/backup1.tar /var/volume1
    /var/volume1  这是要备份的数据卷容器的目录文件夹
    ubuntu:latest  创建数据卷时用的镜像REPOSITORY + TAG
    --volumes-from wang  要备份数据卷的 NAMES
    tar cvf /backup/backup1.tar    备份后的文件格式
    backup1.tar文件默认是保存在宿主机的当前目录下
     
    进入容器内删除数据后进行恢复测试
    docker run --rm --volumes-from wang -v $(pwd):/backup ubuntu:latest  tar xvf /backup/backup1.tar -C /
    backup1.tar 必须在文件所在目录下执行备份命令
     -C /   这是要备份到数据卷容器wang内的路径  / 就是根目录   
     
    当然也可以被分到其他容器里边
    docker run -t -i -v /var/lizhuang1 -v /var/lizhuang2  --name huihui ubuntu:latest  /bin/bash
    创建huihui容器
    docker run --rm --volumes-from huihui -v $(pwd):/backup ubuntu:latest tar xvf /backup/backup1.tar -C /
    将backup.tar导入到huihui容器内
    备份包内的数据目录和导入容器的目录要同步,否则数据无法恢复
     
    删除数据卷
     
     
    docker volume ls 
    查看本地数据卷卷
    docker volume prune
    删除全部数据卷
    docker volume rm +卷ID
    docker rm -vf huihui
    将name为huihui的数据卷删除  
     
    因工作上需要搞k8s,所以借机学习下docker。很多内容都转自于这个博主这里https://www.cnblogs.com/kevingrace/p/6238195.html
    后边备份数据那有点乱,我就是草草记录下 自己能看懂就行   看官要是不明可以去那个博主看看,要比我专业的多。就酱
  • 相关阅读:
    MySQL主从复制与读写分离
    使用PHPCMS搭建wap手机网站
    phpcms v9不用下插件自己做留言板
    css关于banner图轮播的实现
    MySql和Oracle的日期转换到底有哪些不同?我们来比较一下
    CSS---解决内容过多就会出文本溢出(显示在区域外面,不换行的情况)
    dedecms 后台发布后的文章不能编辑出现一片空白的解决办法
    python常识系列11-->python发送邮件基础
    python常识系列10-->python代码注释规范
    python常识系列09-->logging模块之handlers的使用
  • 原文地址:https://www.cnblogs.com/pingg/p/10190726.html
Copyright © 2011-2022 走看看