1. 程式人生 > >Docker操作筆記(三)資料管理

Docker操作筆記(三)資料管理

資料管理

一、資料卷

資料卷 是一個可供一個或多個容器使用的特殊目錄,它繞過 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