docker 資料卷與掛載目錄
阿新 • • 發佈:2019-01-28
-
一:資料卷
資料卷用來儲存對容器的修改/資料,可供容器之間共享和重用,資料卷獨立於容器,不會隨著容器刪除而刪除
建立資料卷
docker volume create my-vol
資料卷列表
docker volume ls
檢視資料卷具體資訊
docker volume inspect my-vol
刪除資料卷
docker volume rm my-vol
清除無主的資料卷
docker volume prune
啟動一個容器並掛載一個數據捲到容器的/webapp目錄(兩種方式:)
docker run -d -P --name nginx -v my-vol:/webapp nginx
docker run -d -P --name nginx --mount source=my-vol,target=/webapp nginx
要點:
①如果本地資料卷或者本地目錄尚未建立,-v命令則會自動建立,--mount則會報錯
②如果是容器裡的目錄不存在,兩者都會自動建立
③--mount命令解析:
由多個鍵=值組成,
有type=bind/volume/tmpfs,(省略該欄位則預設為volume)
可使用source/src=本機目錄檔案,(省略該欄位則為匿名卷)
target/destination/dst=容器目錄,
可指定readonly)
測試一下兩個容器通過資料捲來資料共享(注意:資料卷僅僅儲存掛載目錄裡的資料
容器一:
docker run -d -p 82:80 --name nginx-v -v my-vol-test:/webapp nginx
進入nginx-v容器,到掛載的目錄下建立一個檔案test
docker exec -it nginx-v bash
cd webapp/
touch test
容器二:
docker run -d -p 83:80 --name nginx-v1 --mount src=my-vol-test,target=/mywebapp nginx
進入nginx-v1容器,到掛載目錄下檢視是否有test檔案
docker exec -it nginx-v1 bash
cd mywebapp/
ls
-
二:掛載目錄
將一個本地絕對路徑掛載到tomcat容器的絕對路徑,可通過此方法來部署web應用
docker run -d -p 8082:8080 --name tomcat-mount -v /usr/local/kun/aa:/usr/local/tomcat/webapps/aa tomcat
或者
docker run -d -p 8082:8080 --name tomcat-mount --mount type=bind,src=/usr/local/kun/aa,target=/usr/local/tomcat/webapps/aa tomcat
注意:
①容器裡必須是絕對路徑,如果/usr/local/tomcat/webapps 換成 /webapps 經過驗證是不行的
②如果想要訪問本地/usr/local/kun/aa下的test.html,容器裡的目錄/usr/local/tomcat/webapps必須加多一層目錄 /usr/local/tomcat/webapps/aa