1. 程式人生 > >Docker儲存卷

Docker儲存卷

docker儲存卷:

docker容器卷的使用方式:
1 Docker 管理卷:

docker run -it --name [名稱] -v [docker內部的卷] [映象名稱]
具體使用:
docker run -it --name testvolume -d -v /data/mydata 75835a67d134
檢視儲存卷對映的目錄:
命令:docker inspect f878a628f152

"Mounts": [
   {
    "Type": "volume",
    "Name": "dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b", --卷的uuid
    "Source": "/var/lib/docker/volumes/dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b/_data", --宿主機中的所在位置
    "Destination": "/data/mydata", --容器中的目錄
    "Driver": "local",
    "Mode": "",
    "RW": true,
    "Propagation": ""
            }
測試驗證是否關聯:
在宿主機目錄中建立測試檔案:
[
[email protected]
:23:05_data]#pwd /var/lib/docker/volumes/dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b/_data [[email protected]:23:06_data]#echo "holle world" > test.html 在容器中相對應目錄查詢: [[email protected] /]# cd data/mydata/ [[email protected] mydata]# ls [[email protected]
mydata]# ls test.html 在容器中新增一些內容: [[email protected] mydata]# echo hello yl >> test.html [[email protected] mydata]# cat test.html holle world hello yl 在宿主機中檢視: [[email protected]:23:45_data]#cat test.html holle world hello yl 當使用--rm 一次性啟動的時候退出時候,會一併刪除宿主機目錄中的資料 當使用 -d 做後臺進入執行的時候,退出後刪除容器不會 目錄中資料不會丟失! 2 繫結掛載卷: docker run -it -v [宿主機中目錄]:[容器中目錄] --name [名稱] [映象名稱] 具體使用: docker run -it -v /data/dockerdir:/data/mydata --name b2 75835a67d134 檢視卷資訊: "Mounts": [ { "Type": "bind", "Source": "/data/dockerdir", ---宿主機目錄 "Destination": "/data/mydata", --容器中目錄 "Mode": "", "RW": true, "Propagation": "rprivate" } 當容器刪除後,資料依然存在: [
[email protected]
:36:22dockerdir]#docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d05a6a77992a 75835a67d134 "/bin/bash" 5 minutes ago Exited (0) 22 seconds ago b2 [[email protected]:36:24dockerdir]#docker rm b2 b2 [[email protected]:36:30dockerdir]#docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [[email protected]:36:32dockerdir]#ls test.html [[email protected]:36:49dockerdir]#cat test.html hello world hello yl 再次啟動時即是更換容器內部繫結目錄也可以使用資料: [[email protected]:36:51dockerdir]#docker run -it -v /data/dockerdir:/data/web --rm --name b2 75835a67d134 [[email protected] /]# ls anaconda-post.log bin data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var [[email protected] /]# cd data/ [[email protected] data]# ls web [[email protected] data]# cd web/ [[email protected] web]# ls test.html .................................................................. 使用模板方式過濾資訊: docker inspect -f {{.Mounts}} [映象名稱] ................................................. 多個docker容器可以關聯到一個宿主機目錄! 測試: 啟用兩個容器: docker run -it --name b1 -d -v /data/dockerdir:/data/web 75835a67d134 docker run -it --name b2 -d -v /data/dockerdir:/data/web 75835a67d134 [[email protected]:01:26~]#docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84c3bd9718e0 75835a67d134 "/bin/bash" 5 seconds ago Up 4 seconds b2 d8a8f4203f13 75835a67d134 "/bin/bash" 16 seconds ago Up 15 seconds b1 進入目錄後分別在兩個目錄中建立檔案: b1中建立檔案: [[email protected] web]# echo hello jim > test12.txt [[email protected] web]# ls index.html test12.txt test.html [[email protected] web]# cat test12.txt hello jim b2中建立檔案: [[email protected] web]# echo hello test > index.html [[email protected] web]# ls index.html test.html 宿主機目錄中檢視: [[email protected]:01:28~]#cd /data/dockerdir/ [[email protected]:09:30dockerdir]#ls index.html test12.txt test.html 刪除docker後檢視宿主機目錄資料一樣存在! ............................................................... docker複製儲存卷路徑: 如何複製:具體使用 容器b1: docker run -it --name b2 -d -v /data/dockerdir:/data/web 75835a67d134 不用啟動,只需要存在即可! 容器b2: docker run -it --name b2 --volumes-from b1 75835a67d134 在共享網路: docker run --name t2 --network container:t1 -it --rm b2