Docker容器的數據卷及容器間的通信

Docker容器的數據卷及容器間的通信

Docker中的數據可以存儲在類似於虛擬機磁盤的介質中,在Docker中稱爲數據卷(Data Volume)。數據卷可以用來存儲Docker應用的數據,也可以用來在Docker容器間進行數據共享。
數據卷呈現給Docker容器的形式就是一個目錄,支持多個容器間共享,修改也不會影響鏡像。使用Docker的數據卷,類似在系統中使用 mount 掛載一個文件系統。

1、思考

在說數據卷之前首先請大家思考幾個問題:

Docker容器刪除之後,在容器中產生的數據還在嗎?

Docker容器和外部機器可以直接交換文件嗎?

Docker容器之間想要進行數據交互?

2、數據卷的概念

  • 一個數據卷是一個特別指定的目錄,該目錄利用容器的UFS文件系統可以爲容器提供一些穩定的特性或者數據共享。數據卷可以在多個容器之間共享。
  • 當容器目錄和數據卷目錄綁定後,對方的修改會立即同步。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MJ7o8EGP-1587279575693)(C:\Users\Anita\AppData\Roaming\Typora\typora-user-images\image-20200419135536890.png)]

  • 創建數據卷,只要在docker run命令後面跟上-v參數即可創建一個數據卷,當然也可以跟多個-v參數來創建多個數據卷,當創建好帶有數據卷的容器後,
    就可以在其他容器中通過–volumes-froms參數來掛載該數據捲了,而不管該容器是否運行。也可以在Dockerfile中通過VOLUME指令來增加一個或者多個數據卷。
  • 如果有一些數據想在多個容器間共享,或者想在一些臨時性的容器中使用該數據,那麼最好的方案就是你創建一個數據卷容器,然後從該臨時性的容器中掛載該數據卷容器的數據。這樣,即使刪除了剛開始的第一個數據卷容器或者中間層的數據卷容器,只要有其他容器使用數據卷,數據卷都不會被刪除的。
  • 不能使用docker export、save、cp等命令來備份數據卷的內容,因爲數據卷是存在於鏡像之外的。備份的方法可以是創建一個新容器,掛載數據卷容器,同時掛載一個本地目錄,然後把遠程數據卷容器的數據卷通過備份命令備份到映射的本地目錄裏面。

3、數據卷的作用

  • 容器數據持久化
  • 外部機器和容器間接通信
  • 容器之間數據交換

4、數據卷的配置

創建啓動容器時,使用-v參數 設置數據卷

docker run ...-v 宿主機的目錄:容器內的目錄

注意事項:

  • 目錄必須是絕對路徑
  • 如果目錄不存在會自動創建;
  • 一個容器可以掛載多個數據卷。

演示:
在這裏插入圖片描述
在這裏插入圖片描述

5、通過數據卷使容器之間通信

我們可以通過兩個容器同時掛載一個宿主機的目錄來實現容器之間的通信。
接下來,我們做一個實驗,將宿主機/root/data目錄,同時掛載到C3和C4容器的/root/data下,驗證數據是否同步。
宿主機:/root/data
C3:/root/data
C4:/root/data

在這裏插入圖片描述
操作演示:
在這裏插入圖片描述
在這裏插入圖片描述
總結:學完數據卷我們再來回答,我們剛開始提出的思考問題:

1、Docker容器刪除之後,在容器中產生的數據還在嗎?

容器都刪了當然不在了,但是有數據卷就的話就可以保留。

2、Docker容器和外部機器可以直接交換文件嗎?

通過在宿主機上掛載數據卷,可以間接交換。

3、Docker容器之間想要進行數據交互?

通過同時掛載宿主機的數據卷可以間接數據交互。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章