1. 程式人生 > 其它 >Docker學習02 - Docker的資料卷

Docker學習02 - Docker的資料卷

Docker容器的資料卷

資料卷概念

思考1: docker刪除後,容器中產生的資料還在嗎?

思考2: docker容器和外部機器能夠直接交換檔案嗎?

思考3: 容器之間如何進行資料交換?

答案:

1 不在了

2 不能

3 資料卷!

資料卷:是一個宿主機中的目錄或者檔案。使用掛載將宿主機目錄掛到容器中。

使用資料卷,可以解決上面的3個問題。

特性:

  • 容器目錄和資料卷繫結後,對方的修改會立即同步

  • 一個數據卷可以被多個容器同時掛載

  • 一個容器也可以被掛載多個數據卷

作用:

  • 容器資料持久化
  • 外部機器和容器的通訊
  • 容器之間的資料交換

資料卷命令

  • 配置資料卷

    建立容器時,通過使用-v引數設定資料卷

    1目錄必須為絕對路徑

    2不管是宿主機還是容器,目錄不存在都會自動建立

    3可以掛載多個數據卷

掛載方式1:

docker run .... -v {宿主機目錄or檔案}:{容器內目錄or檔案} -v .... -v ....

掛載方式2:

# 這種方法-v後面代表容器內部的目錄,在宿主機中,是在docker內部建立一個臨時目錄存放
docker run .... -v {目錄}

驗證:

我們可以讓2個容器同時掛載宿主機上的資料卷,達到多個容器共享資料的作用

資料卷容器

多容器進行資料交換:

1 多個容器掛載同一個資料卷

2 docker提供了專門用來做資料卷的容器-資料卷容器

結構

說明:c1容器和c2容器掛載c3容器的目錄,而這個目錄是由宿主機掛載到c3上面的

配置資料卷容器

1 建立 資料卷容器

docker run -idt --name volume_container -v /home/zhaozijian/docker_share:/datas nginx /bin/bash

此時我們可以使用docker inspect命令,檢視binds屬性,可以看到它的掛載磁碟。

source代表宿主機目錄,Destination代表容器內部的目標目錄

2 建立c1 c2容器

docker run -idt --name c1 --volumes-from volume_container nginx /bin/bash
docker run -idt --name c2 --volumes-from volume_container nginx /bin/bash

我們再次使用docker inspect檢視c1或者c2,發現他和volume_container的掛載是相同的,我們可以通過管理volume_container來實現多個容器的同時管理

docker inspect c1