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

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

即使你刪除了剛開始的第一個數(shù)據(jù)卷容器或者中間層的數(shù)據(jù)卷容器,只要有其他容器使用數(shù)據(jù)卷,數(shù)據(jù)卷都不會被刪除的。
你也可以把一個本地主機的目錄當做數(shù)據(jù)卷掛載在容器上,同樣是在docker run后面跟-v參數(shù),不過-v后面跟的不再是單獨的目錄了,他是[host-dir]:[container-dir]:[rw|ro]這樣格式的,host-dir是一個絕對路徑的地址,如果host-dir不存在,則docker會創(chuàng)建一個新的數(shù)據(jù)卷,如果host-dir存在,但是指向的是一個不存在的目錄,則docker也會創(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)容,因為數(shù)據(jù)卷是存在于鏡像之外的,但是總會有變通方法的,如下:
docker run -rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
創(chuàng)建一個新容器,掛載數(shù)據(jù)卷容器,同時掛載一個本地目錄,然后把遠程數(shù)據(jù)卷容器的數(shù)據(jù)卷通過備份命令備份到映射的本地目錄里面。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Docker實現(xiàn)從零開始搭建SOLO個人博客的方法步驟
本文主要介紹了Docker實現(xiàn)從零開始搭建SOLO個人博客,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
docker-compose部署mysql數(shù)據(jù)庫完整步驟
Docker-Compose項目是Docker官方的開源項目,負責實現(xiàn)對Docker容器集群的快速編排,這篇文章主要給大家介紹了關于docker-compose部署mysql數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2024-05-05
Docker快速部署gitlab+gitlab-runner實例
這篇文章主要介紹了Docker快速部署gitlab+gitlab-runner實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
docker?run?-d和docker?run?-it的區(qū)別詳解
記得第一次接觸docker的時候,教程中寫著docker?run?-it之類的命令,當時對這個-it選項是一知半解,下面這篇文章主要給大家介紹了關于docker?run?-d和docker?run?-it的區(qū)別的相關資料,需要的朋友可以參考下2023-05-05

