Data Volumes 數(shù)據(jù)卷: 容器內(nèi)數(shù)據(jù)直接映射到本地宿主機(jī)朽合。
Data Volume Containers 數(shù)據(jù)卷容器: 容器間共享數(shù)據(jù)卷 膀跌。
數(shù)據(jù)卷
數(shù)據(jù)卷是一個特殊的目錄钾麸,它將主機(jī)目錄直接映射進(jìn)容器寞秃∈实叮可供一個或多個容器使用穷蛹。
數(shù)據(jù)卷設(shè)計的目的就是為了 數(shù)據(jù)的持久化土陪,它完全獨(dú)立與容器的生命周期。因此肴熏,容器刪除時鬼雀,不會刪除其掛載的數(shù)據(jù)卷,也不會存在類似的垃圾機(jī)制對容器存在的數(shù)據(jù)卷進(jìn)行處理蛙吏。
數(shù)據(jù)卷的特性:
- 數(shù)據(jù)卷在容器啟動時初始化源哩,如果容器使用的鏡像在掛載點(diǎn)包含了數(shù)據(jù),這些數(shù)據(jù)會拷貝到新初始化的數(shù)據(jù)卷中鸦做。
- 數(shù)據(jù)卷可以在容器之間共享和重用励烦。
- 可以對數(shù)據(jù)卷里的內(nèi)容直接修改,修改回馬上生效泼诱,無論是容器內(nèi)操作還是本地操作坛掠。
- 對數(shù)據(jù)卷的更新不會影響鏡像的更新。
- 數(shù)據(jù)卷會一直存在治筒,即使掛載數(shù)據(jù)卷的容器已經(jīng)被刪除屉栓。
創(chuàng)建命令:
docker run -v /root/dshare:/data -it centos /bin/bash
-v : 在容器中創(chuàng)建一個數(shù)據(jù)卷。
/root/dshare:/data : 冒號前是宿主機(jī)目錄耸袜, 后面是容器中的目錄友多。
創(chuàng)建后, 無論是在宿主機(jī)還是在容器中操作數(shù)據(jù)卷中的內(nèi)容堤框,都會同時在另一面看到域滥。
通過docker inspect 34c47c684658 命令可以查看數(shù)據(jù)卷的一些信息:
"HostConfig": {
"Binds": [
"/root/dshare:/data"
],
...
"Mounts": [
{
"Type": "bind",
"Source": "/root/dshare",
"Destination": "/data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
Docker掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫(rw),通過上面的 “RW”: true可以看到,我們也可以在創(chuàng)建的時候進(jìn)行設(shè)置為只讀胰锌,使用ro .
docker run -v /root/dshare:/data:ro -it centos /bin/bash
數(shù)據(jù)卷容器
通過掛載命名的容器來實(shí)現(xiàn)數(shù)據(jù)共享 骗绕。
首選創(chuàng)建一個容器 ,并命名 资昧, 然后在其他容器中進(jìn)行掛載 酬土。
docker run --name votest1 -ti test_vo
docker run --name votest2 --volumes-from votest1 -it centos /bin/bash
這樣在兩個容器中都能看到/data1 和 /data2 , 并且對兩個目錄的任意修改都會被對方看到。