資料卷是乙個可以供乙個或多個容器使用的特殊目錄。
可以達到以下目的:
1. 繞過「拷貝寫」系統,以達到本地磁碟io的效能,(比如執行乙個容器,在容器中對資料卷修改內容,會直接改變宿主機上的資料卷中的內容,所以是本地磁碟io的效能,而不是先在容器中寫乙份,最後還要將容器中的修改的內容拷貝出來進行同步。)
2. 繞過「拷貝寫」系統,有些檔案不需要在docker commit打包進映象檔案。
3. 在多個容器間共享目錄
4. 在宿主和容器間共享目錄
5. 在宿主和容器間共享乙個檔案。
docker run 在建立容器時使用 -v 引數可以掛載乙個或多個資料捲到當前執行的容器中,-v 的作用是將宿主機上的目錄作為容器的資料卷掛載到容器中,使宿主機和容器之間可以共 享乙個目錄。
掛載資料捲到新建立的容器上:
--name paremeter -v /tmp/data1:/data1 -v /tmp/data2:/data2 rhel7 /bin/bash #進入rhel7映象搭載的parameter容器中的bash -v後面的是掛載的情況(可重複使用)
-v 引數可以重複使用,掛載多個資料捲到容器中,冒號前面的是宿主機的目錄(本地目錄 不存在 docker 會自動建立),冒號後面的是容器中的掛載目錄。
注:docker commit 時卷的資料不會被儲存。 預設掛載可以讀寫資料卷,也可以唯讀掛載:
--name parameter2 -v /tmp/data2:/data2:ro rhel /bin/bash #在後面 +:ro 為唯讀掛載
掛載宿主機檔案:
docker run -it --name patameter3 -v /etc/yum.repos
.d/rhel-***.repo:/etc/yum.repos
.d/rhel-***.repo:ro rhel7 /bin/bash
#這樣就實現了yum倉庫的共享搭建
資料卷容器:
docker run -it
--name vm1 --volumes-from data rhel7 /bin/bash
docker run -it
--name vm2 --volumes-from data rhel7 /bin/bash
測試效果如下
docker attach vm1
bash-4.2
# cd /sharedata/
bash-4.2
# touch vm1file
docker attach vm2
bash-4.2
# cd /sharedata/
bash-4.2
# ls
passwd vm1file
bash-4.2
# touch vm2file
在物理機上檢視
ls /tmp/sharedata/ passwd
vm1file vm2file
備份資料卷:
docker run --rm --volumes-from
data
-v /tmp/backup:/backup rhel7 tar cf /sharedata
/backup/test.tar
Docker 資料卷管理
資料卷介紹 宿主機無法直接訪問容器中的檔案 容器中的檔案沒有持久化,導致容器刪除後,檔案資料也隨之消失 容器之間無法直接訪問相互的檔案 為解決這些問題,docker加入了資料卷 volumes 機制,能很好解決上面問題,以實現 容器與主機之間,容器與容器之間共享檔案 容器中的資料持久化 將容器中的資...
Docker 資料卷管理
建立資料卷 管理資料卷許可權 1.docker run v hostdir guestdir privileges2.卷共享應用,配置,資料等 掛載宿主機檔案 使用資料卷容器共享資料 1.建立資料卷容器 docker create v shiyanloudata name shiyanloudb u...
Docker容器資料管理(資料卷 資料卷容器)
在docker容器的實際使用中,經常會遇到容器的資料持久化,容器之間的資料共享等問題,通常我們有兩種解決方案 1 資料卷 data volumes 就是將容器內資料直接對映到本地主機環境的指定檔案目錄之中,可以理解為容器掛載乙個虛擬資料卷然後 對映到乙個主機目錄中 2 資料卷容器 data volu...