1. 程式人生 > >docker 資料卷與掛載目錄

docker 資料卷與掛載目錄

  • 一:資料卷

資料卷用來儲存對容器的修改/資料,可供容器之間共享和重用,資料卷獨立於容器,不會隨著容器刪除而刪除

建立資料卷

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