Docker操作筆記(三)資料管理
阿新 • • 發佈:2019-01-07
資料管理
一、資料卷
資料卷
是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性:
-
資料卷
可以在容器之間共享和重用 -
對
資料卷
的修改會立馬生效 -
對
資料卷
的更新,不會影響映象 -
資料卷
預設會一直存在,即使容器被刪除
1.建立一個數據卷
docker volume create my_vol
2.檢視所有資料卷
docker volume ls
3.檢視指定資料卷
docker volume inspect my_vol
4.啟動掛載資料卷的容器
在用 docker run
命令的時候,使用 --mount
標記來將 資料卷
掛載到容器裡。在一次 docker run
中可以掛載多個 資料卷
。
下面建立一個名為 web
的容器,並載入一個 資料卷
到容器的 /webapp
目錄。
docker run -d -P \--name web \ # -v my-vol:/wepapp \ --mount source=my-vol,target=/webapp \ training/webapp \ python app.py
5.檢視資料卷的具體資訊
docker inspect web
6.刪除資料卷
docker volume rm my_vol
資料卷
是被設計用來持久化資料的,它的生命週期獨立於容器,Docker 不會在容器被刪除後自動刪除 資料卷
,
並且也不存在垃圾回收這樣的機制來處理沒有任何容器引用的 資料卷
。如果需要在刪除容器的同時移除資料卷。
另外,無主的資料卷可能會佔據很多空間,要清理請使用以下命令:
docker volume prune
二、掛載主機目錄
1.掛載一個主機目錄作為資料卷
使用 --mount
標記可以指定掛載一個本地主機的目錄到容器中去。
$ docker run -d -P \ --name web \ # -v /src/webapp:/opt/webapp \ --mount type=bind,source=/src/webapp,target=/opt/webapp \ training/webapp \ python app.py
上面的命令載入主機的 /src/webapp
目錄到容器的 /opt/webapp
目錄。這個功能在進行測試的時候十分方便,
比如使用者可以放置一些程式到本地目錄中,來檢視容器是否正常工作。本地目錄的路徑必須是絕對路徑,
以前使用 -v
引數時如果本地目錄不存在 Docker 會自動為你建立一個資料夾,
現在使用 --mount
引數時如果本地目錄不存在,Docker 會報錯。
Docker 掛載主機目錄的預設許可權是 讀寫
,使用者也可以通過增加readolny指定為只讀。
$ docker run -d -P \ --name web \ # -v /src/webapp:/opt/webapp:ro \ --mount type=bind,source=/src/webapp,target=/opt/webapp,readonly \ training/webapp \ python app.py
2.掛載一個本地主機檔案作為資料卷
$ docker run --rm -it \ # -v $HOME/.bash_history:/root/.bash_history \ --mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \ ubuntu:18.04 \ bash