2016-04-20 16 views
2

我讀泊塢窗的用戶指南段上卷在:https://docs.docker.com/engine/userguide/containers/dockervolumes/Docker:創建一個數據卷容器vs簡單地使用-v標誌和`run`?

在第一個部分表示瞭如何創建和卷添加到容器中,這個我稱之爲「方法1」:

您可以多次使用-v裝入多個數據卷。現在,在您的Web應用程序容器中安裝一個卷。

$ docker run -d -P --name web -v /webapp training/webapp python app.py 

這將創建在/ webapp的一個容器內的新卷。

它後來去談論數據量的容器,這個我稱之爲「法2」:

如果您有想要容器之間共享,或者想使用一些持久性數據從非持久性容器中,最好創建一個命名的數據容器容器,然後從中裝入數據。

$ docker create -v /dbdata --name dbstore training/postgres /bin/true 

這裏就是我不明白,什麼是通過簡單的使用與docker run(方法1)V.S.的-v命令實現音量的區別通過使用「數據量容器」(方法2)來實現卷?

看起來你只是在創建一個在圖像非持久化容器的生命週期中持久化的卷,如果我錯了,請糾正我。

+0

我的理解是'create'創建一個容器但不運行它,所以你得到一個只消費數據的容器,它不消耗任何CPU。然後,您可以將該容器中的卷與許多其他容器共享。 –

+0

@warmoverflow其實你可以'創建'一個卷而不把它放到容器中,當我發佈這個問題時我很困惑,所以它不是很清楚,但不同之處在於在方法1中,容器,在方法2中,你把它放在一個容器內,使其成爲「數據容器」或其他東西。 – Jose

+0

在方法1中,體積位於容器內,如文檔所述。是的,你可以創建一個沒有容器的卷,但是你需要使用'docker volume create',而不是'docker create -v'。 –

回答

0

在我的理解中,至少從docker 1.12開始,卷總是一樣的東西:一些持久的數據存儲在主機的某個地方。但有不同的方法來管理卷:

  1. 創建它並將其安裝到容器(您的方法1)。通過這種方式,當您想將一個容器的卷裝入另一個容器時,可以使用「卷 - 來源」
  2. 使用docker volume create創建卷並讓docker管理它。它將被保存在主機系統的某個地方(例如/ var/lib/docker),但是你並不關心在哪裏以及如何到底。
  3. 將主機目錄掛載爲一個卷,在這種情況下,您可以知道它在主機上的安裝位置,並且對其負責。

然後,有「技巧」(描述here例如:

「如果你通過碼頭工人辦起圖像運行新容器創建一個名爲卷-v我的寶石 - 數據:/數據imageName,在/數據容器內的數據將被複制到指定的音量「

因此,您創建的方式/管理您的音量可能會有所不同了一點,但它本質上總是。一卷。

相關問題