容器中管理數據主要有兩種方式:linux
數據卷(Data Volumes)docker
數據卷容器(Data Volumes Dontainers)centos
數據卷tomcat
使用-v能夠掛載一個本地的目錄到容器中做爲數據卷。bash
[root@wls12c /]$ ls /b2b backup prog_update wasStatus.log [root@wls12c /]$ docker run -d --name=tomcat -v /b2b:/test -it centos /bin/bash f85c616bde3317c857b657355561a1cfa4203fab2b8619386435e541089bde23 [root@wls12c /]$ docker exec -it tomcat /bin/bash [root@f85c616bde33 /]# ls /test backup prog_update wasStatus.log [root@f85c616bde33 /]# touch test/demo [root@f85c616bde33 /]# ls /test backup demo prog_update wasStatus.log [root@f85c616bde33 /]# exit exit [root@wls12c /]$ ls /b2b backup demo prog_update wasStatus.log
能夠看見容器中已經掛載了/b2b目錄了,並有其中數據。it
數據卷容器test
若是容器之間須要共享一些持續更新的數據,最簡單的方式就是是用戶數據卷容器,數據卷容器就是一種普通容器,專門提供數據卷供其它容器掛載使用。容器
建立數據卷容器dbdatadate
[root@wls12c /]$ docker run -it -v /dbdata:/dbdata --name dbdata centos [root@07e4ad5587e1 /]
建立db1和db2兩個容器,並使用--volumes-from掛載dbdata容器中的數據卷ember
[root@wls12c /]$ docker run -it --volumes-from dbdata --name db1 centos [root@wls12c /]$ docker run -it --volumes-from dbdata --name db2 centos
這樣三個容器任何一個容器在該目錄下寫入,其它容器都能看見。
備份
備份dbdata數據卷容器中的數據到主機的當前目錄。
[root@wls12c /]$ docker run --volumes-from dbdata -v $(pwd):/backup --name worker centos tar zcf /backup/backup.tar.gz /dbdata tar: Removing leading `/' from member names [root@wls12c /]$ ls b2b boot dev lib media net root srv tmp backup.tar.gz cgroup etc lib64 misc opt sbin sys usr bin dbdata home lost+found mnt proc selinux test var [root@wls12c /]$ tar -tvf backup.tar.gz drwxr-xr-x root/root 0 2016-08-26 10:51 dbdata/ -rw-r--r-- root/root 0 2016-08-26 10:40 dbdata/demo -rw-r--r-- root/root 6 2016-08-26 10:48 dbdata/test.txt -rw-r--r-- root/root 0 2016-08-26 10:51 dbdata/hello
恢復
建立一個帶有數據卷的容器
[root@wls12c /]$ docker run -v /dbdata/dbdata --name db centos /bin/bash
恢復
[root@wls12c /]$ docker run --volumes-from db -v $(pwd):/backup centos tar xf /backup/backup.tar.gz