创建数据卷
[root@bogon df_test1]# docker run --privileged=true -it -v /usr/java/datas:/data centos /bin/bash #--privileged=true是允许运行的容器加特权拥有编辑操作等 [root@23533d8e59c6 /]# cd data [root@23533d8e59c6 data]# touch a.txt [root@23533d8e59c6 data]# echo "i am jiaxianseng" >>a.txt [root@23533d8e59c6 data]# cat a.txt i am jiaxianseng [root@23533d8e59c6 data]# [root@bogon df_test1]# [root@bogon df_test1]# cd /usr/java/datas [root@bogon datas]# ll 总用量 4 -rw-r--r--. 1 root root 17 1月 2 22:52 a.txt [root@bogon datas]# cat a.txt i am jiaxianseng
3、添加权限之可读:
[root@bogon datas]# docker run -it -v /usr/java/datas:/data:ro --name cct8 centos /bin/bash [root@91ee8587eba5 /]# cd /data [root@91ee8587eba5 data]# ech "www.baidu.com" >> a.txt bash: a.txt: Permission denied #但是可以通过vi打开
4、通过Dockerfile创建数据卷
FROM centos VOLUME ["/usr/java/datas","/data"] CMD /bin/bash
六、数据卷容器
1、什么是数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器叫做数据卷容器
2、挂载数据卷容器的方法
docker run --volumes-from [CONTAINER NAME]
[root@bogon datas]# ll #当期那目录有a.txt文件 总用量 4 -rw-r--r--. 1 root root 17 1月 2 22:52 a.txt [root@bogon datas]# pwd /usr/java/datas [root@bogon datas]# docker run -it -v /usr/java/datas:/dbdata --name dbdata centos #创建数据卷容器 [root@da12a0d3bf2f /]# exit exit [root@bogon datas]# docker run -it --volumes-from dbdata --name db1 centos #创建两个容器并挂载到dbdata容器中的数据卷 [root@ae1156049856 /]# [root@bogon datas]# [root@bogon datas]# docker run -it --volumes-from dbdata --name db2 centos [root@4b857926f794 /]# ll total 28 -rw-r--r--. 1 root root 12076 Dec 5 01:37 anaconda-post.log lrwxrwxrwx. 1 root root 7 Dec 5 01:36 bin -> usr/bin drwxr-xr-x. 2 root root 18 Jan 2 14:52 dbdata drwxr-xr-x. 5 root root 360 Jan 3 13:09 dev drwxr-xr-x. 1 root root 62 Jan 3 13:09 etc drwxr-xr-x. 2 root root 6 Apr 11 2018 home lrwxrwxrwx. 1 root root 7 Dec 5 01:36 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Dec 5 01:36 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Apr 11 2018 media drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt drwxr-xr-x. 2 root root 6 Apr 11 2018 opt dr-xr-xr-x. 228 root root 0 Jan 3 13:09 proc dr-xr-x---. 2 root root 4096 Dec 5 01:37 root drwxr-xr-x. 1 root root 20 Jan 3 13:09 run lrwxrwxrwx. 1 root root 8 Dec 5 01:36 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Apr 11 2018 srv dr-xr-xr-x. 13 root root 0 Jan 3 12:42 sys drwxrwxrwt. 7 root root 4096 Dec 5 01:37 tmp drwxr-xr-x. 13 root root 4096 Dec 5 01:36 usr drwxr-xr-x. 18 root root 4096 Dec 5 01:36 var [root@4b857926f794 /]# cd / [root@4b857926f794 /]# cd dbdata [root@4b857926f794 dbdata]# ll total 4 -rw-r--r--. 1 root root 17 Jan 2 14:52 a.txt [root@4b857926f794 dbdata]# cat a.txt #此时在任意一个容器中编辑数据,其他容器都能看的到,这是数据卷容器中的a.txt文件 i am jiaxianseng
即使删了数据卷容器,挂载的容器数据依然存在
[root@bogon datas]# docker rm dbdata dbdata [root@bogon datas]# docker attach db1 [root@ae1156049856 /]# ll / [root@ae1156049856 /]# cd dbdata [root@ae1156049856 dbdata]# ll total 4 -rw-r--r--. 1 root root 17 Jan 2 14:52 a.txt
七、数据卷的备份和还原
1、数据卷备份方法
docker run --volumes-from [container name] -v$(pwd):/backup centos
tar cvf /backup/backup.tar [container data volum
[root@bogon datas]# docker run -it -v /usr/java/datas:/dbdata --name cct1 centos [root@713cdcf2c026 /]# exit exit [root@bogon datas]# docker run --privileged=true --volumes-from cct1 -v /backup:/backup --name cct2 centos tar cvf /backup/cct1.tar /dbdata /dbdata/ /dbdata/a.txt tar: Removing leading `/' from member names [root@bogon datas]# cd /backup [root@bogon backup]# ll 总用量 12 -rw-r--r--. 1 root root 10240 1月 3 21:32 cct1.tar
2、数据卷还原方法
docker run --volumes-from [container name] -v $(pwd):/backup centos
tar xvf /backup/backup.tar [container data volume]