4.docker數據卷管理
生產過程中使用docker往往需要對數據進行持久化,或者需要在多個容器之間進行數據共享,因此就需要數據卷來做數據持久化
*數據卷:容器內數據直接映射到本地主機環境
數據卷的特性:
1)可以在容器之間共享和重用,容器間傳遞數據變得高效方便
2)對數據卷內數據的修改會立馬生效,無論是容器內操作還是本地操作
3)對數據卷的更新不會影響鏡像,解耦了應用和數據
4)卷會一直存在,直到沒有容器使用,可以安全地卸載它
創建數據卷
docker run -it --name web -v ~/webapp:/webapp ubuntu:latest /bin/bash
本地目錄必須是絕對路徑,如果目錄不存在docker會自動創建
修改數據卷的權限,默認是rw(讀寫),ro(只讀)
docker run -it --name web -v ~/webapp:/webapp:ro ubuntu:latest /bin/bash
*數據卷容器
創建數據卷容器:
docker run -it --volumes-from web --name web2 ubuntu
可以多次使用--volumes-from參數來從多個容器掛載多個數據卷。
還可以從其他已經掛載了容器卷的容器來掛載數據卷
如果刪除了掛載數據卷的容器,數據卷並不會自動刪除。
如果要刪除一個數據卷,必須在最後一個還掛載著它的容器顯式
使用docker rm -v命令指定同時刪除關聯的容器
*docker數據卷備份
mkdir backup &&cd backup #在物理機上創建backup目錄
docker run --volumes-from webapp -v $(pwd):/backup --name worker ubuntu
tar cvf /backup/backup.tar /webapp
#這個命令的原理是:新創建一個容器worker,連接了數據卷容器webapp,並將物理機backup目錄映射到worker的/backup,
然後tar命令就將數據卷webapp的/webapp目錄打包到/backup-->物理機backup目錄
*docker數據卷還原到其他容器
先建立一個新容器
docker run -it -v /webapp --name db1 ubuntu /bin/bash
相同的原理,新建一個容器worker1,連接了數據卷容器db1,映射了物理機backup目錄到worker1的/backup目錄,tar命令將
備份包還原到db1的/webapp下,完成還原
docker run --volumes-from db1 --name worker1 -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
如果還原到原容器
docker run --volumes-from webapp -v $(pwd):/backup ubuntu tar xvf /backup/backup.tar
4.docker數據卷管理