2016-03-19 56 views
10

幾篇文章對理解Docker的卷和數據管理非常有幫助。這兩個特別是優秀:裝載碼頭主機卷,但用容器內容覆蓋

不過,我不知道什麼,我找了討論。這是我的理解:

  1. 當運行docker run -v /host/something:/container/something主機文件將覆蓋(但不覆蓋)在指定位置的容器文件。該容器將不再有權訪問該位置的以前的文件,而只能訪問該位置的主機文件。
  2. 當在Dockerfile中定義一個卷時,其他容器可能共享圖像/容器創建的內容。
  3. 主機還可以查看/修改Dockerfile卷,但僅在使用碼頭檢查發現真正的掛載點之後。 (通常像/var/lib/docker/vfs/dir/cde167197ccc3e138a14f1a4f7c....)。然而,當Docker必須在Virtualbox虛擬機內部運行時,這是多餘的。

我的問題很簡單。如何反轉疊加層,以便在裝入卷時,容器文件優先於我的主機文件?

我想指定一個可以輕鬆訪問容器文件系統的安裝點。但似乎沒有人提出這個問題。我知道我可以爲此使用數據容器,或者我可以使用docker檢查來查找掛載點,但在這種情況下,這兩種解決方案都不是一個好的解決方案。

+0

你的問題違反你的規則編號1 –

+1

@warmoverflow我對模糊語言表示歉意。編號列表僅列舉了我已經知道的Docker的能力。他們不是我想遵守的規則。它包含讓你知道我已經做了盡職調查並正在尋求幫助。 –

回答

6

Docker 1.10+共享文件的方式將通過卷,如docker volume create
這意味着,您不需要專用於數據卷的容器,可以直接使用數據卷。

通過這種方式,您可以在容器中共享和安裝該卷,然後將其內容保留在該卷中。
這更符合容器的工作方式:隔離主機的內存,cpu和文件系統:這就是爲什麼你無法「裝載卷並且容器的文件優先於主機文件」:將打破該容器隔離並向主機公開其內容。