Docker volume使用詳解及實(shí)例
Docker volume使用
一個(gè)數(shù)據(jù)卷是一個(gè)特別指定的目錄,該目錄利用容器的UFS文件系統(tǒng)可以為容器提供一些穩(wěn)定的特性或者數(shù)據(jù)共享。數(shù)據(jù)卷可以在多個(gè)容器之間共享。
創(chuàng)建數(shù)據(jù)卷,只要在docker run命令后面跟上-v參數(shù)即可創(chuàng)建一個(gè)數(shù)據(jù)卷,當(dāng)然你也可以跟多個(gè)-v參數(shù)來創(chuàng)建多個(gè)數(shù)據(jù)卷,當(dāng)創(chuàng)建好帶有數(shù)據(jù)卷的容器后,你就可以在其他容器中通過--volumes-froms參數(shù)來掛載該數(shù)據(jù)卷了,而不管該容器是否運(yùn)行。你也可以在Dockerfile中通過VOLUME指令來增加一個(gè)或者多個(gè)數(shù)據(jù)卷。
如果你有一些數(shù)據(jù)想在多個(gè)容器間共享,或者想在一些臨時(shí)性的容器中使用該數(shù)據(jù),那么最好的方案就是你創(chuàng)建一個(gè)數(shù)據(jù)卷容器,然后從該臨時(shí)性的容器中掛載該數(shù)據(jù)卷容器的數(shù)據(jù)。例如如下操作:
#啟動(dòng)一個(gè)Volume_Container容器,包含兩個(gè)數(shù)據(jù)卷 docker run -v /var/volume1 -v /var/volume2 -name Volume_Container ubuntu14.04 linux_command #創(chuàng)建App_Container容器,掛載Volume_Container容器中的數(shù)據(jù)卷 docker run -t -i -rm -volumes-from Volume_Container -name App_Container ubuntu14.04 linux_command #或者再創(chuàng)建一個(gè)容器,掛載App_Container中從Volume_Container掛載的數(shù)據(jù)卷 docker run -t -i -rm -volumes-from App_Container -name LastApp_Container ubuntu14.04 linux_command
1 在一個(gè)終端內(nèi)創(chuàng)建數(shù)據(jù)卷容器,并在數(shù)據(jù)卷目錄內(nèi)寫入測試文件

2 另打開一個(gè)容器,掛載上一個(gè)數(shù)據(jù)卷容器的數(shù)據(jù)卷,查看測試文件

即使你刪除了剛開始的第一個(gè)數(shù)據(jù)卷容器或者中間層的數(shù)據(jù)卷容器,只要有其他容器使用數(shù)據(jù)卷,數(shù)據(jù)卷都不會(huì)被刪除的。
你也可以把一個(gè)本地主機(jī)的目錄當(dāng)做數(shù)據(jù)卷掛載在容器上,同樣是在docker run后面跟-v參數(shù),不過-v后面跟的不再是單獨(dú)的目錄了,他是[host-dir]:[container-dir]:[rw|ro]這樣格式的,host-dir是一個(gè)絕對路徑的地址,如果host-dir不存在,則docker會(huì)創(chuàng)建一個(gè)新的數(shù)據(jù)卷,如果host-dir存在,但是指向的是一個(gè)不存在的目錄,則docker也會(huì)創(chuàng)建該目錄,然后使用該目錄做數(shù)據(jù)源。例如:
docker run -i -t -v /tmp:/mnt ubuntu/14.04:14.04 /bin/bash

你不能使用docker export、save、cp等命令來備份數(shù)據(jù)卷的內(nèi)容,因?yàn)閿?shù)據(jù)卷是存在于鏡像之外的,但是總會(huì)有變通方法的,如下:
docker run -rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
創(chuàng)建一個(gè)新容器,掛載數(shù)據(jù)卷容器,同時(shí)掛載一個(gè)本地目錄,然后把遠(yuǎn)程數(shù)據(jù)卷容器的數(shù)據(jù)卷通過備份命令備份到映射的本地目錄里面。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
使用TLS加密通訊遠(yuǎn)程連接Docker的示例詳解
這篇文章主要介紹了使用TLS加密通訊遠(yuǎn)程連接Docker的示例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Docker實(shí)現(xiàn)從零開始搭建SOLO個(gè)人博客的方法步驟
本文主要介紹了Docker實(shí)現(xiàn)從零開始搭建SOLO個(gè)人博客,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
docker-compose部署mysql數(shù)據(jù)庫完整步驟
Docker-Compose項(xiàng)目是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對Docker容器集群的快速編排,這篇文章主要給大家介紹了關(guān)于docker-compose部署mysql數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2024-05-05
使用Docker?Compose部署Nginx的詳細(xì)教程
在現(xiàn)代應(yīng)用部署中,容器編排工具已成為不可或缺的一部分,Docker?Compose?作為?Docker?官方的單機(jī)編排工具,通過聲明式的?YAML?文件簡化了多容器應(yīng)用的管理,下面我們就來看看如何使用Docker?Compose部署Nginx吧2025-03-03
使用Docker命令查看容器最后300行實(shí)時(shí)日志
在日常的容器化應(yīng)用管理中,日志是排查問題、監(jiān)控運(yùn)行狀態(tài)的重要工具,Docker 提供了簡便的命令來查看容器日志,幫助開發(fā)者和運(yùn)維人員快速定位問題,本篇博客將詳細(xì)介紹如何使用 Docker 命令查看指定容器的最后 300 行實(shí)時(shí)日志,需要的朋友可以參考下2025-03-03
Docker快速部署gitlab+gitlab-runner實(shí)例
這篇文章主要介紹了Docker快速部署gitlab+gitlab-runner實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
docker?run?-d和docker?run?-it的區(qū)別詳解
記得第一次接觸docker的時(shí)候,教程中寫著docker?run?-it之類的命令,當(dāng)時(shí)對這個(gè)-it選項(xiàng)是一知半解,下面這篇文章主要給大家介紹了關(guān)于docker?run?-d和docker?run?-it的區(qū)別的相關(guān)資料,需要的朋友可以參考下2023-05-05

