docker数据管理与备份


docker数据管理


1、挂载本地目录到容器里
docker run -tid -v /data/:/data centos bash //-v 用来指定挂载目录,:前面的/data/为宿主机本地目录,:后面的/data/为容器里的目录,会在容器中自动创建

2、挂载数据卷
(其实我们挂载目录的时候,可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定,它就生成了一个名字为relaxed_franklin,这个名字可以使用命令 docker ps 看最右侧一列)

docker run -itd --volumes-from relaxed_franklin aming123 bash

这样,我们使用aming123镜像创建了新的容器,并且使用了 relaxed_franklin 上一个容器的数据卷
3、查询容器详情信息

 docker inspect -f {{.Mounts}}  f545d733e680

4、定义数据卷容器
有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。


首先建立数据卷容器
docker run -itd -v /data/ --name testvol centos bash //注意这里的/data/是容器的/data目录,并非本地的/data/目录。

然后让其他容器挂载该数据卷

docker run -itd  --volumes-from testvol aming123 bash

查看数据卷

docker volume ls

创建数据卷

docker volume create aaa

创建数据卷容器

docker run -itd -v aaa:/data  --name aaa centos bash

不进容器直接查看内容(前提容器必须是开启的)

docker exec -it f2f68e27ca65  ls

例:
新建目录,
挂载本地目录到容器,并取名为haha。
查看容器。
然后用上一个容器的数据卷创建一个容器。
查看容器
查询容器详细信息( {{.Mounts}} 这个可用命令 (docker inspect 加容器ID) 查询到 )

[root@localhost ~]# mkdir /data
[root@localhost ~]# docker run -itd  -v /data/:/data --name haha centos bash
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
65912c500584        centos              "bash"              22 seconds ago      Exited (0) 13 seconds ago                       haha
[root@localhost ~]# docker run -itd --volumes-from haha centos bash
ca5eea9aaaa42a54a949bbb80f89e22d3063674d28b9e7319eb115727bd2d827
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
ca5eea9aaaa4        centos              "bash"              5 seconds ago       Up 4 seconds                                   adoring_curran
65912c500584        centos              "bash"              3 minutes ago       Exited (0) 2 minutes ago                       haha
[root@localhost ~]# docker inspect -f  {{.Mounts}} ca5eea9aaaa4
[{  /data /data   true }]

docker备份


1、 备份
1)创建目录

 mkdir /data/backup

2)使用上一容器的数据卷,把/data/backup目录挂到容器的/backup目录下,(这样在容器中/backup目录里面新建的文件,我们就可以直接在/data/backup/目录中看到了)并在容器内执行 tar命令,然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。

docker run --volumes-from testvol -v  /data/backup/:/backup centos tar cvf  /backup/data.tar /data/

3)查看

ll /data/backup/.

说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地的/vol_data_backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建的文件,我们就可以直接在/data/backup/目录中看到了。 然后再把/data/目录下面的文件打包到成data.tar文件放到/backup目录下面。
2、 恢复
思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar包解包。

1)新建数据卷容器:

 docker run -itd -v /data/ --name testvol2 centos bash

2)挂载数据卷新建容器,并解包:

 docker run --volumes-from testvol2  -v /data/backup/:/backup centos tar xf /backup/data.tar 

3)删除所有容器

docker rm -f $(docker ps -qa)  

例:
创建目录
新建数据卷容器并执行打包命令
查看
新建另一个数据卷容器,
使用上一个容器的数据卷建立一个容器,解压刚刚的包

[root@localhost ~]# mkdir /data/backup
[root@localhost ~]# docker run --volumes-from haha -v /data/backup/:/backup/ centos tar cvf /backup/data.tar /data/
tar: Removing leading `/' from member names
tar: /data/backup/data.tar: file is the archive; not dumped
/data/
/data/backup/
[root@localhost ~]# ll /data/backup
total 12
-rw-r--r--. 1 root root 10240 Nov  6 18:35 data.tar
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker run -itd -v /data/ --name yuyu centos bash
b78b30668903632cbe46d1322830510c2c1a669f90cdbb2529d1f8470545c155
[root@localhost ~]# docker run --volumes-from yuyu -v /data/backup/:/backup centos tar xf /backup/data.tar

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值