中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用Volume在主機和Docker容器文件傳輸

發布時間:2021-08-20 11:43:08 來源:億速云 閱讀:182 作者:小新 欄目:服務器

小編給大家分享一下如何利用Volume在主機和Docker容器文件傳輸,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.使用Volume在主機和容器之間傳輸文件。

在官方文檔中可以看到使用如下命令即可創建一個volume:

Create a volume:

$ docker volume create my-vol

注意這個命令不是所有的docker版本都可以運行的:

The client and daemon API must both be at least 1.21 to use this command. Use the docker version command on the client to check your client and daemon API versions.

如何利用Volume在主機和Docker容器文件傳輸

創建完成之后可以查看詳細信息:

$ docker volume inspect my-vol

如何利用Volume在主機和Docker容器文件傳輸

注意這個Mountpoint所對應的目錄就是我們用來主機和容器進行文件傳輸的目錄。

然后在使用run啟動一個容器的時候就可以使用該volume:

如何利用Volume在主機和Docker容器文件傳輸

可以看到通過-v命令將剛才創建的數據卷掛載到容器中的hostdata目錄下了,這時候我們在容器中給hostdata目錄下添加文件的時候,在主機的的/var/lib/docker/volumes/my-vol/_data中就可以看到了,同理在主機的該目錄中添加文件,在容器的hostdata中也可以看到。

我將nginx這個文件復制到主機中用來交換的目錄下,進入容器之后在hostdata的目錄下也可以查看:

如何利用Volume在主機和Docker容器文件傳輸

同樣的在容器中將文件拷貝到hostdata目錄下中,在主機的/var/lib/docker/volumes/my-vol/_data也能夠使用查看。

在這里我在容器中創建一個文件testfile并向其中寫入:This is container write!,然后回到主機進行查看,并在主機中使用vim向其中添加:“This is host write!”,并返回容器中進行查看。

如何利用Volume在主機和Docker容器文件傳輸

2.使用數據卷容器。

我在有些地方看到有人使用數據卷容器來實現多個容器之間的數據共享,其過程是這樣子的:

1.先創建一個數據卷容器dbdata,并在其中創建一個數據卷掛載到/bdata:

如何利用Volume在主機和Docker容器文件傳輸

可以通過docker volume ls查看生成了一個隨機名稱的volume。

2.然后,可以在其他容器中使用–volumes-from來掛載dbdata容器中的數據卷,例如創建db1和db2兩個容器,并從dbdata容器掛載數據卷:

如何利用Volume在主機和Docker容器文件傳輸

3.然后此時在三個容器中任何一方在/dbdata目錄下的寫入,其他容器中都可以看到。

如何利用Volume在主機和Docker容器文件傳輸

在圖中,在dbdata容器中創建testfile文件并寫入”dbdata container write!”,然后在db1容器中查看并寫入“db1 container write!”,然后在db2容器中查看并寫入“da2 container write!”,最后回到dbdata容器中查看。

4.然后還可以通過多個–volumes-from來掛載多個數據卷,然后還給出了備份和恢復的方法,網上一搜一大把。

3.為什么不用數據卷容器?

在看到許許多多關于數據卷容器的文章,并且都是大同小異。然后我想了想發現并沒有使用數據卷的必要性(或許是我想的不夠周全)。

上面提到數據卷容器用來在多個容器中共享數據,但是在明明可以通過掛載一個相同的本地目錄就能實現該方法。比如說在第一步中創建的my-vol數據卷,我可以將其同時掛載到db3和db4容器中。

如何利用Volume在主機和Docker容器文件傳輸

在圖中,我將my-vol數據卷掛載到了db3和db4中,然后在其中能夠找到之前的數據文件,并且在db4容器中對testfile文件進行寫入操作,在db3中容器中也可以查看。

那么也就是說,我同樣的可以通過掛載一個數據卷就可以實現多個容器中的數據共享,并且在主機的目錄中添加的文件,在所有的容器中也能夠查看。如果備份的話直接在主機本地將文件夾進行拷貝即可,豈不是更方便。

4.為什么使用數據卷容器?

但是數據卷容器還有一個作用比較不錯,那就是可以用來指定掛載本地目錄,在第一點中我們創建一個名為my-vol的數據卷,該數據卷在本地存放的目錄為:/var/lib/docker/volumes/my-vol/_data,可以看出這個名字很長不方便操作,可以通過數據卷容器來解決該問題。

比如我在主機上創建了一個專門用來存放主機和容器進行文件交互的目錄,也就是說以后我想給容器中傳輸什么文件了,我直接將文件拷貝到該目錄下即可:

如何利用Volume在主機和Docker容器文件傳輸

我在官方文檔中并沒有發現使用docker volume create 創建數據卷時可以指定volume對應的本地目錄的命令(或許是我看的不夠多)。

但是我就是想要用/usr/local/datadb 這個目錄該怎么辦?此刻數據卷容器的作用就出來了,可以通過創建一個數據卷容器,并且將該目錄掛在到數據卷容器上即可:

如何利用Volume在主機和Docker容器文件傳輸

在圖中,我創建了一個所謂的數據卷容器,并且使用-v參數,將剛才主機的/usr/local/datadb目錄掛載進去,然后在容器中創建文件testfile并寫入“HAHAHAHA”,在主機上進行查看。

然后在其他容器創建的時候既可以使用–volumes-from將該數據卷容器進行掛載,然后想給容器中傳文件的時候直接拷貝到/usr/local/datadb目錄下即可,反過來容器給主機傳文件直接拷貝到容器中的掛載目錄下即可。

至于備份,直接將主機/usr/local/datadb賦值一份就好了,恢復的話再次掛載就好了。

以上是“如何利用Volume在主機和Docker容器文件傳輸”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辽宁省| 永福县| 巴楚县| 类乌齐县| 马关县| 交城县| 昌黎县| 泸西县| 云阳县| 黄浦区| 锡林郭勒盟| 大化| 娄烦县| 洛浦县| 乌鲁木齐市| 叙永县| 曲靖市| 玛纳斯县| 德保县| 碌曲县| 罗定市| 鞍山市| 新昌县| 新泰市| 新野县| 志丹县| 庆元县| 伊宁市| 东明县| 西充县| 大冶市| 清丰县| 怀宁县| 巴林左旗| 凤阳县| 平南县| 灵山县| 方正县| 凤城市| 新巴尔虎左旗| 孝感市|