使用数据容器时,您可以使用像这样的匿名卷
version '2' services: consumer: volume_from: - data-container:rw data-container: image: cogniteev/echo command: echo 'Data Container' volume: - /var/www
或者您可以使用这样的命名卷
version '2' services: consumer: volume_from: - data-container:rw data-container: image: cogniteev/echo command: echo 'Data Container' volume: - my-named-volume:/var/www volumes: my-named-volume: driver: local
我通常会选择b),并且想讨论/解释这两个概念上的问题/缺点。那么优点和缺点是什么。
我们可以将其进行比较的方面可能是:
这个问题在这个问题上引起了讨论https://stackoverflow.com/a/38984689/3625317
简短的答案:命名数据卷是首选,不再需要数据容器,因此您永远不要volumes-from在任何新项目上使用。
volumes-from
您的命名卷版本正在合并一个命名容器和数据容器,它应该是:
version '2' services: web: image: my-web-image volumes: - my-named-volume:/var/www volumes: my-named-volume: driver: local
通过合并两者,您增加了一个额外的间接层来达到您的命名卷,而没有任何其他好处。命名卷是在1.9版中创建的,用于替换数据容器,而数据容器本身就是提供持久性数据的一种骇人听闻的方法。命名卷相对于数据容器的优势包括:
又见这个问题也讨论了名为卷VS数据容器和这个答案到另一个类似的问题。我们也为我工作的公司写了一篇博客文章。