數據卷掛載
在生產環境中,需要對數據進行持久化,冗餘化,或者在需要在多個容器之間進行數據共享
數據卷:容器內數據直接映射到本地主機環境
數據卷容器:使同特定容器維護數據卷
-v 進行映射
1.在容器內生成一個數據卷
docker run -id --rm --name dbdata -v dbdata docker.io/busybox
2.掛載主機目錄作爲數據卷, 將webroot掛載到容器的test中(絕對路徑)
docker run -id --rm --name -P web -v /root/webroot:/test docker.io/busybox
3.掛載一個本機文件作爲數據卷, 將web.xml掛載到容器的test中(不推薦)
docker run -id --rm --name -P web -v /root/web.xml:/test docker.io/busybox
總結:
如果使用文件掛載,當使用vim或者sed --in-place時候,可能造成inode改變,所以不推薦以文件掛載
數據卷容器
生成一個專門放數據的容器,這個數據卷容器可以在多個容器之間共享一些持續更行的數據
1.生成數據卷容器
docker run -it --name dbdata -v /dbdata docker.io/busybox
查看結果
/ # ls
bin dbdata dev etc home proc root run sys tmp usr var
2.創建其他容器,其實可用到 --volumes-from來掛載dbdata容器中的數據卷
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 命令來指定 同時刪除關聯的容器
利用數據捲來遷移數據
利用數據容器對其中的數據捲進行備份,恢復以實現數據遷移
1.備份
docker run --volumes-from dbdata -v /root/back:/backup --name back docker.io/busybox tar -cvf /backup/backup.tar /dbdata
利用目錄掛載,就可以把備份放到物理機的/root/back裏了
2.恢復
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