1. 程式人生 > >4.docker數據卷管理

4.docker數據卷管理

http vol bsp 容器 info TE latest 行數據 name

生產過程中使用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數據卷管理