6. 数据管理

Docker 数据管理

1. 挂载本地的目录到容器里

docker run -tid -v /data/:/data aming bash //-v 用来指定挂载目录,:前面

的/data/为本地目录,:后面的/data/为容器里的目录
mkdir /data
[root@bogon ~]# docker run -itd -v /data/:/data1 centos bash

touch /data/1.txt
[root@bogon ~]# echo "ldjsafjasfj" > /data/1.txt
[root@bogon ~]# docker exec -it 089 bash

[root@0899fcc7d442 /]# ls /data1/
1.txt
[root@0899fcc7d442 /]# touch /data1/2.txt
[root@0899fcc7d442 /]# exit[root@bogon ~]#
[root@bogon ~]# ls /data/
1.txt 2.txt
[root@bogon ~]# docker stop 089
089
[root@bogon ~]# ls /data/
1.txt 2.txt

2. 挂载数据卷

其实我们挂载目录的时候,可以指定容器name,如果不指定就随机定义了。比如上面我

们没有指定,它就生成了一个名字为loving_kowalevski,这个名字可以使用命令 docker

ps 看最右侧一列

docker run -itd --volumes-from loving_kowalevski aming/centos bash
[root@bogon ~]# docker run -itd --volumes-from adoring_brown centos bash


这样,我们使用aming/centos镜像创建了新的容器,并且使用了 loving_kowalevski

容器的数据卷



3. 定义数据卷容器
有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS,所以就可以搭

建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

首先建立数据卷容器
docker run -itd -v /data/ --name testvol aming/centos bash //注意这里

的/data/是容器的/data目录,并非本地的/data/目录。

然后让其他容器挂载该数据卷
docker run -itd --volumes-from testvol aming bash
docker run -itd --volumes-from cent_testv centos bash
docker run -itd --volumes-from cent_testv --name=web2 centos bash
docker run -itd --volumes-from cent_testv --name=web3 centos bash

Docker 数据管理 - 数据卷的备份与恢复
备份
mkdir /vol_data_backup

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

说明:首先我们需要使用testvol数据卷新开一个容器,同时我们还需要把本地

的/vol_data_backup/目录挂载到该容器的/backup下,这样在容器中/backup目录里面新建

的文件,我们就可以直接在/vol_data_backup/目录中看到了。 然后再把/data/目录下面的

文件打包到成data.tar文件放到/backup目录下面。

恢复
思路: 先新建一个数据卷容器,再建一个新的容器并挂载该数据卷容器,然后再把tar

包解包。

新建数据卷容器:docker run -itd -v /data/ --name testvol2 aming/centos bash

挂载数据卷新建容器,并解包:docker run --volumes-from testvol2 -v

/vol_data_backup/:/backup aming/centos tar xvf /backup/data.tar
posted @ 2016-12-16 16:54  onlylc  阅读(101)  评论(0)    收藏  举报