2017-01-26 49 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在删除容器时不会自动删除卷,也不会“垃圾收集”不再由容器引用的卷。