Docker 數據卷和數據卷容器


1.本節課主要講解如何在Docker內部及容器之間管理數據。
容器中管理數據主要有兩種方式:
數據卷(Data volumes)
數據卷容器(Data volume containers)

2.數據卷:是一個可供一個或多個容器使用的特殊目錄,它繞過UFS,可以提供很多有用的特性:
a.數據卷可以在容器之間共享和重用
b.對數據卷的修改會立馬生效
c.對數據卷的更新,不會影響鏡像
d.卷會一直存在,直到沒有容器使用
*數據卷的使用,類似於 Linux 下對目錄或文件進行 mount。

3.創建數據卷

$ docker run -idt -P -v /webapp my/centos:v888 /bin/bash ##a、/webapp為創建的數據卷 b、my/centos:v888為鏡像 c、-P外網到容器的一個硬射的IP
ecde369d5c9ca75eaf394caaa1f0ce5d63e1323739c657595bd01f68d5d2d304
$ docker attach ecde369d5c9ca75eaf394caaa1f0ce5d63e1323739c657595bd01f68d5d2d304 ##進入守護狀態運行的容器中

$ docker run -idt -P --name web1 -v /webapp my/centos:v888 /bin/bash ##/webapp上面創建的容器,web1和/webapp目錄是共享的,但對數據卷的更新,不會影響鏡像
01808bde8cba1c5dab720043af7c607625b5b769cac8133c09aef02c246b6312
$ docker attach web1 ##通過web1名稱進入守護狀態運行的容器中

-v表示創建一個數據卷並且掛載到容器里。
--name指定容器的名稱
-d是指守護狀態下運行(daemon)
啟動之后,使用docker attach命令進入守護狀態運行的容器中

除此之外,還可以掛載宿主機的一個目錄來映射到容器里面作為數據卷

$ docker run -idt -P --name web2 -v /home/xm6f/dev/test:/opt/docker my/centos:v888 /bin/bash
d0aeebbcd269143e1345ace90992d21c5d9687375f39524a9ed25d6dd2a5b54f
$ docker attach web2

表示宿主機的目錄/home/xm6f/dev/test映射到容器中的/opt/docker目錄。


你會發現宿主機/home/xm6f/dev/test目錄創建的文件跟容器/opt/docker目錄的文件一樣。

docker掛載的數據卷默認是可讀可寫的,若要指定為只讀,可以加權限限制:ro

$ docker run -idt -P --name web3 -v /home/xm6f/dev/test:/opt/docker:ro my/centos:v888 /bin/bash

也可以掛載單個文件到容器

docker run -idt -P --name web4 -v ~/.bash_history:/.bash_history my/centos:v888 /bin/bash

4.數據卷容器:是一個正常的容器,專門用來提供數據卷供其他容器掛載
建立數據卷容器:

$ docker run -d -v /database --name db my/centos:v888 echo database
$ docker logs db

在其他容器中使用--volumes-from掛載db容器中的數據卷

$ docker run -idt -v /aaa --name bbb my/centos:v888 /bin/bash
$ docker run -idt --volumes-from bbb --name ccc my/centos:v888 /bin/bash


可以看到數據卷容器,在多個容器中掛載之后是數據共享的。

5.數據卷不會被自動刪除,要刪除一個數據卷,必須在刪除最后一個掛着該數據卷的容器是指定-v參數,如下

docker rm -v 數據卷名字

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM