docker資料卷(Data Volumes)

Dawn.x發表於2020-12-21

Docker宿主機和容器之間檔案拷貝

前言

本篇部落格主要就是基於宿主機和容器之間進行檔案交換

容器中的管理資料主要有兩種方式(推薦)

資料卷 Data Volumes 容器內資料直接對映到本地主機環境;
資料卷容器(Data Volume Containers 使用特定容器維護資料卷

還有最原始的copy方式,這個也是管理資料的方式,但是基本不會用到

最原始的copy方式管理資料:

先理解一下宿主機和容器

通過centos來建立多個容器,那麼容器裡面也有容器中的資料夾

而我們要進行從宿主機copy檔案到容器裡面,然後從容器copy資料夾到宿主機

在這裡插入圖片描述

1.宿主機檔案 copy to 容器內

docker cp 需要拷貝的檔案或者目錄 容器名稱:容器目錄

例項:

docker cp bb.txt cbc1bad8feb6:/lyd

在這裡插入圖片描述
2.容器內 copy to 宿主機

docker cp 容器名稱:容器目錄 宿主機目錄

例項:

docker cp cbc1bad8feb6:lyd/aa.txt /zking

在這裡插入圖片描述

可自行切換宿主機和容器內進行檢視

資料卷

建立好資料卷之後不管是宿主還是容器中修改資料卷兩邊內容都會同步

資料卷(Data Volumes)

資料卷是一個可供一個或多個容器使用的特殊目錄,它將主機作業系統目錄直接對映進容器

特性:

1.資料卷 可以在容器之間共享和重用
2.對資料卷的修改會立馬生效
3.對資料卷的更新,不會影響映象
4.資料卷 預設會一直存在,即使容器被刪除

資料卷相關操作

1.建立資料卷

docker volume create my-vol

此時,資料卷預設會放到/var/lib/docker/volumes路徑下,會發現所新建的資料卷位置

檢視命令如下:

cd /var/lib/docker/volumes

2.檢視所有的資料卷

docker volume ls

3.檢視指定資料卷的詳細資訊(顯示一個JSON格式的資料)

docker volume inspect my-vol

4.刪除一個volume

docker volume rm my-vol

注1:資料卷 是被設計用來持久化資料的,它的生命週期獨立於容器,Docker不會在容器被刪除後自動刪除資料卷,並且也不存在垃圾回收這樣的機制來處理沒有任何容器引用的資料卷,無主的資料卷可能會佔據很多空間, 所以要及時刪除

5.啟動一個掛載資料卷的容器

demo1

docker run -d
-it
–name mycentos02
–mount source=my-vol,target=/webapp3
centos:7

注意:此行命令執行後的效果是,宿主機路徑/var/lib/docker/volumes/my-vol/_data與mycentos02容器路徑/webapp完成對映

demo2

docker run -d
-it
–name mycentos3
–mount type=bind,source=/lyd/data,target=/root/webapp12
centos:7

注1:linux命令結尾加斜槓有什麼用 加了“\”意為將最後的回車換行給註釋了,系統理解為命令還沒有結束,因而是繼續等待使用者進行輸入,直到讀到結束符,如回車

注2:source=my-vol,target=/webappmy-vol為要掛載的資料卷,如果資料卷不存在,docker會自動建立/webapp為容器上目錄,如果目錄不存在, Docke會自動建立

資料卷容器

資料卷容器

如果使用者需要在多個容器之間共享一些持續更新的資料,最簡單的方式是使用資料卷容器

資料卷容器也是一個容器,但是它的目的是專門提供資料卷給其他容器掛載

1.新建資料卷容器

docker run -di --name db_data -v /db_data centos:7

注:-v 後面接的共享資料真實存放路徑

在資料卷容器中隨便建立一個檔案比如tomcat.log,裡面隨便寫點啥

2.用容器db1、db2測試資料卷容器是否可用

docker run -di --name db1 --volumes-from db_data centos:7
docker run -di --name db2 --volumes-from db_data centos:7

建立好的兩個資料卷同時擁有第一個資料卷中的tomcat.log,並且在任意一個資料卷中修改tomcat.log檔案其他的都會同步

在這裡插入圖片描述
小結

資料卷:安裝軟體放資料卷中

資料卷容器:經常變動的或者共享的放入資料卷容器,比如日誌

相關文章