在生產環境中,須要對數據進行持久化,冗餘化,或者在須要在多個容器之間進行數據共享node
數據卷:容器內數據直接映射到本地主機環境web
數據卷容器:使同特定容器維護數據卷docker
-v 進行映射vim
docker run -id --rm --name dbdata -v dbdata docker.io/busybox安全
docker run -id --rm --name -P web -v /root/webroot:/test docker.io/busybox分佈式
docker run -id --rm --name -P web -v /root/web.xml:/test docker.io/busybox.net
若是使用文件掛載,當使用vim或者sed --in-place時候,可能形成inode改變,因此不推薦以文件掛載翻譯
生成一個專門放數據的容器,這個數據卷容器能夠在多個容器之間共享一些持續更行的數據xml
docker run -it --name dbdata -v /dbdata docker.io/busyboxblog
查看結果
/ # ls
bin dbdata dev etc home proc root run sys tmp usr var
docker run -it --name web1 --volumes-from dbdata docker.io/busybox
docker run -it --name web2 --volumes-from dbdata docker.io/busybox
在其中一個容器中建立一個文件,能夠在另外兩個看到
能夠屢次使用--volumes-from來掛載dbdata,也能夠從其餘已經掛載的容器卷的容器掛載數據卷
若是刪除了掛載的容器(包括dbdata,web1,web2),數據卷並不會被刪除.只有刪除最後一個還掛載着它的容器 顯示使用docker rm -v 命令來指定 同時刪除關聯的容器
利用數據容器對其中的數據捲進行備份,恢復以實現數據遷移
docker run --volumes-from dbdata -v /root/back:/backup --name back docker.io/busybox tar -cvf /backup/backup.tar /dbdata
利用目錄掛載,就能夠把備份放到物理機的/root/back裏了
docker run --volumes-from dbdata -v /root/back:/backup --name recover docker.io/busybox tar -xvf /backup/backup.tar
總結:
經過數據卷和數據卷容器對容器內數據進行共享,備份,恢復等操做,即便出現了運行故障,用戶也沒必要擔憂數據丟失,只須要快速建立容器便可
在生產環境中,按期在物理機上進行數據備份,使用支持容錯的存儲系統(RAID,分佈式文件系統{Ceph,GPFS,HDFS}).能夠大大提高數據安全
入門容器操做見https://blog.csdn.net/Nedved_L/article/details/79067732