2017-01-26 99 views
1

我不明白什麼區別有數據量和數據容器之間...... 例如這兩泊塢窗,撰寫confguration有相同的結果,但在第一次使用的數據容器泊塢窗 - 數據量和數據容器之間的差異

絲毫數據容器

datacontainer: 
image: httpd:2.4-alpine 
volumes: 
    - ../src:/usr/local/apache2/htdocs 

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes_from: 
    - datacontainer 

沒有數據容器

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes: 
    - ../src:/usr/local/apache2/htdocs 

有什麼優點和使用的缺點數據容器?

+0

你的第一個例子不是數據容器應該如何工作 – tkausl

+0

什麼是它的正確使用? – hellb0y77

+0

他們應該存儲他們的數據。在您的第一個撰寫yml中,您的apache只是將該卷繼承到「外部」並將所有內容存儲在主機上,就好像數據容器從不存在一樣。 – tkausl

回答

3

這些示例都不是真正的數據卷或數據容器。他們都綁定到主機,一個間接比另一個。我傾向於將這些作爲主機卷。

數據容器已棄用到指定的卷。他們看起來像:

datacontainer: 
image: httpd:2.4-alpine 
command: tail -f /dev/null 
volumes: 
    - /data 

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes_from: 
    - datacontainer 

然後,你可以重新apache的容器,或升級,而無需升級datacontainer,並仍然有你的可用數據。這有多個缺點,並且如果使用圖像I posted a blog about just how much I dislike that中定義的體積實施。但最大的問題是,您將數據作爲一個容器來管理,因此任何容器清理例程都會同樣清理您的數據,如果您反對數據丟失或容器擴展,則不是很好。

命名卷容易得多,並且具有數據容器的所有相同功能,但將數據管理與容器管理分開,允許容器被清除而不用擔心,並且數據將從一個位置備份。他們看起來像:

apache: 
image: httpd:2.4-alpine 
ports: 
    - 80:80 
volumes: 
    - data:/data 

注意在撰寫的版本2中,你會更具體的卷定義。

0

數據容器模式是圍繞數據持久性設計的,儘管它在Docker 1.9中大多已被命名卷廢棄。卷和數據容器模式的主要優點是綁定在主機上的掛載是依賴主機的,這意味着您不能在docker文件中使用它。通過卷,您可以靈活地在構建圖像時定義卷。

此外,數據卷旨在保持數據,與容器的生命週期無關。因此,Docker在刪除容器時不會自動刪除卷,也不會「垃圾收集」不再由容器引用的卷。