數據卷是一個可供容器使用的特殊目錄,能夠在容器之間共享和重用,對數據卷的修改會立刻生效,卷會一直存在直到沒有容器使用,數據卷的使用相似於mount
docker
數據卷容器就是一個普通的容器,可專門提供數據卷供其餘容器掛載使用,能夠在容器之間共享一些持續更新的數據centos
1:建立數據卷tomcat
利用鏡像centos,建立一個名爲tomcat的容器,並在後臺以守護進程方式工做,且將本地的/b2b/目錄掛在在新創建的tomcat容器的/test目錄下bash
root@My-Ubuntu:/home/zxl# docker run -d --name=tomcat -v /b2b:/test -it centos ide
3865efc4c698fe74c4975e18ca80f113130e8c76e0d4f175dc53e22f68a9ec15spa
進入tomcat容器,並啓動/bin/bash
進程
root@My-Ubuntu:/home/zxl# docker exec -it tomcat /bin/bashrem
[root@3865efc4c698 /]# ls /test/it
在tomcat容器的/test目錄下建立一個叫haha的文件class
[root@3865efc4c698 /]# touch /test/haha
[root@3865efc4c698 /]# ls /test/
haha
[root@3865efc4c698 /]# exit
exit
退出tomcat容器後,進入本地的/b2b/目錄下
root@My-Ubuntu:/home/zxl# cd /b2b/
能夠看到高才在tomcat容器中建立的文件在
root@My-Ubuntu:/b2b# ll
total 8
drwxr-xr-x 2 root root 4096 Aug 3 11:18 ./
drwxr-xr-x 24 root root 4096 Aug 3 11:17 ../
-rw-r--r-- 1 root root 0 Aug 3 11:18 haha
2:建立數據卷容器
首先用centos鏡像建立一個叫dbdata的數據卷容器,並將本地的/dbdata目錄掛載到dbdata數據卷容器的/dbdata目錄下,也能夠不掛載
root@My-Ubuntu:/b2b# docker run -it -v /dbdata:/dbdata --name dbdata centos
[root@6f23465f05f3 /]# exit
exit
再用centos鏡像新建立db1和db2兩個容器,並用--volumes-from 參數掛載dbdata數據卷容器上的數據卷
root@My-Ubuntu:/b2b# docker run -it --volumes-from dbdata --name db1 centos
[root@be670cd7fd5b /]# exit
exit
root@My-Ubuntu:/b2b# docker run -it --volumes-from dbdata --name db2 centos
[root@8fe9f2b7fe15 /]# exit
exit
啓動db1容器
root@My-Ubuntu:/b2b# docker start db1
db1
進入到db1容器中的/dbdata目錄下,建立一個叫作hehehe的文件
root@My-Ubuntu:/b2b# docker exec -it db1 /bin/bash
[root@be670cd7fd5b /]#
[root@be670cd7fd5b /]# cd /dbdata/
[root@be670cd7fd5b dbdata]# ll
total 0
[root@be670cd7fd5b dbdata]# touch hehehe
[root@be670cd7fd5b dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 04:02 hehehe
[root@be670cd7fd5b dbdata]# exit
exit
啓動db1容器
root@My-Ubuntu:/b2b# docker start db2
db2
進入到db1容器中的/dbdata目錄下,能夠看到db1建立的hehehe文件,並建立一個叫作hahaha的文件
root@My-Ubuntu:/b2b# docker exec -it db2 /bin/bash
[root@8fe9f2b7fe15 /]# cd /dbdata/
[root@8fe9f2b7fe15 dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 04:02 hehehe
[root@8fe9f2b7fe15 dbdata]# touch hahaha
[root@8fe9f2b7fe15 dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 04:05 hahaha
-rw-r--r-- 1 root root 0 Aug 3 04:02 hehehe
[root@8fe9f2b7fe15 dbdata]# exit
exit
啓動並進入數據卷容器dbdata
root@My-Ubuntu:/b2b# docker start dbdata
dbdata
root@My-Ubuntu:/b2b# docker exec -it dbdata /bin/bash
[root@6f23465f05f3 /]# cd /dbdata/
在/dbdata目錄下能夠看到db1和db2建立的文件,且建立一個叫aaaa的文件
[root@6f23465f05f3 dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 04:05 hahaha
-rw-r--r-- 1 root root 0 Aug 3 04:02 hehehe
[root@6f23465f05f3 dbdata]# touch aaaaa
[root@6f23465f05f3 dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 07:24 aaaaa
-rw-r--r-- 1 root root 0 Aug 3 04:05 hahaha
-rw-r--r-- 1 root root 0 Aug 3 04:02 hehehe
將hehehe文件刪除
[root@6f23465f05f3 /]# rm /dbdata/hehehe
rm: remove regular empty file '/dbdata/hehehe'? y
[root@6f23465f05f3 /]# cd /dbdata/
[root@6f23465f05f3 dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 07:24 aaaaa
-rw-r--r-- 1 root root 0 Aug 3 04:05 hahaha
[root@6f23465f05f3 dbdata]# exit
exit
進入db1容器,能夠看到aaaa且hehehe被刪除了
root@My-Ubuntu:/b2b# docker exec -it db1 /bin/bash
[root@be670cd7fd5b /]# cd /dbdata/
[root@be670cd7fd5b dbdata]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 07:24 aaaaa
-rw-r--r-- 1 root root 0 Aug 3 04:05 hahaha
在本地的/dbdata目錄下葉能夠看到文件,由於在建立數據卷容器dbdata時,將本地的/dbdata目錄掛在到了數據卷容器的/dbdata目錄下
root@My-Ubuntu:/b2b# cd /dbdata/
root@My-Ubuntu:/dbdata# ll
total 8
drwxr-xr-x 2 root root 4096 Aug 3 15:25 ./
drwxr-xr-x 25 root root 4096 Aug 3 11:41 ../
-rw-r--r-- 1 root root 0 Aug 3 15:24 aaaaa
-rw-r--r-- 1 root root 0 Aug 3 12:05 hahaha