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è)絕對(duì)路徑的地址,如果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ù)卷通過備份命令備份到映射的本地目錄里面。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
docker-compose部署MySQL8的實(shí)現(xiàn)
本文主要介紹了docker-compose部署MySQL8的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題
本篇文章主要介紹了解決docker數(shù)據(jù)文件過大導(dǎo)致根磁盤滿的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04Docker下利用jenkins和docker實(shí)現(xiàn)持續(xù)交付
這篇文章主要介紹了利用jenkins和docker實(shí)現(xiàn)持續(xù)交付功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Docker?Compose構(gòu)建Jenkins的實(shí)現(xiàn)
本文主要介紹了Docker?Compose構(gòu)建Jenkins的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Linux下Docker及portainer相關(guān)配置方法
本文以CentOS 7為例,安裝docker CE版本,docker有兩種版本,社區(qū)版本CE和企業(yè)版本EE,通過實(shí)例代碼給大家介紹了Linux下Docker及portainer相關(guān)配置方法,感興趣的朋友跟隨小編一起看看吧2019-06-06詳解docker?制作mysql鏡像并自動(dòng)安裝腳本
這篇文章主要介紹了docker mysql鏡像制作并自動(dòng)安裝腳本,主要包括centos7環(huán)境下 一鍵制作mysql docker鏡像并安裝,對(duì)docker?制作mysql鏡像shell腳本感興趣的朋友一起看看吧2022-05-05