Docker學習02 - Docker的資料卷
阿新 • • 發佈:2021-10-26
Docker容器的資料卷
資料卷概念
思考1: docker刪除後,容器中產生的資料還在嗎?
思考2: docker容器和外部機器能夠直接交換檔案嗎?
思考3: 容器之間如何進行資料交換?
答案:
1 不在了
2 不能
3 資料卷!
資料卷:是一個宿主機中的目錄或者檔案。使用掛載將宿主機目錄掛到容器中。
使用資料卷,可以解決上面的3個問題。
特性:
-
容器目錄和資料卷繫結後,對方的修改會立即同步
-
一個數據卷可以被多個容器同時掛載
-
一個容器也可以被掛載多個數據卷
作用:
- 容器資料持久化
- 外部機器和容器的通訊
- 容器之間的資料交換
資料卷命令
-
配置資料卷
建立容器時,通過使用-v引數設定資料卷
1目錄必須為絕對路徑
2不管是宿主機還是容器,目錄不存在都會自動建立
3可以掛載多個數據卷
掛載方式1:
docker run .... -v {宿主機目錄or檔案}:{容器內目錄or檔案} -v .... -v ....
掛載方式2:
# 這種方法-v後面代表容器內部的目錄,在宿主機中,是在docker內部建立一個臨時目錄存放
docker run .... -v {目錄}
驗證:
我們可以讓2個容器同時掛載宿主機上的資料卷,達到多個容器共享資料的作用
資料卷容器
多容器進行資料交換:
1 多個容器掛載同一個資料卷
2 docker提供了專門用來做資料卷的容器-資料卷容器
結構
說明:c1容器和c2容器掛載c3容器的目錄,而這個目錄是由宿主機掛載到c3上面的
配置資料卷容器
1 建立 資料卷容器
docker run -idt --name volume_container -v /home/zhaozijian/docker_share:/datas nginx /bin/bash
此時我們可以使用docker inspect命令,檢視binds屬性,可以看到它的掛載磁碟。
source代表宿主機目錄,Destination代表容器內部的目標目錄
2 建立c1 c2容器
docker run -idt --name c1 --volumes-from volume_container nginx /bin/bash docker run -idt --name c2 --volumes-from volume_container nginx /bin/bash
我們再次使用docker inspect檢視c1或者c2,發現他和volume_container的掛載是相同的,我們可以通過管理volume_container來實現多個容器的同時管理
docker inspect c1