首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >volumes-from和volumes之间的区别是什么?

volumes-from和volumes之间的区别是什么?
EN

Stack Overflow用户
提问于 2015-03-28 01:28:51
回答 3查看 26.9K关注 0票数 39

我看到了docker-compose模式,但我很困惑。制作组合容器的最好方法是什么?什么时候应该使用linkvolumes_from。我应该在什么时候使用volumes_fromvolumes

#1应用程序-数据库-数据应用程序:映像:某些映像链接:- db //数据卷容器名称db:映像: mysql volumes_from:- data //数据卷名数据:映像:某些映像卷:-{主机数据}:{访客数据}

#2 app- db +data app: image: name image link:-db //数据卷容器名称db: image: mysql卷:- data //数据文件名

app #1 app-service-data

代码语言:javascript
复制
app:
    image: someimage
    volumes_from:
        - service // service container name 
service:
    image: mysql
    volumes_from:
        - data // image container name
data:
    image: someimage
    volumes:
        - {host data}:{guest data} 

#2应用程序-服务+数据

代码语言:javascript
复制
app:
    image: someimage
    volumes_from:
        - service // service container name 
service:
    image: mysql
    volumes:
        - data // mounted file

谢谢

EN

回答 3

Stack Overflow用户

发布于 2015-05-13 00:32:31

Linkvolumes_from是两个不同的概念。当您需要连接(通过网络)两个容器时,可以使用链接。在这种情况下,如果您想要将应用程序连接到数据库,方法是使用链接,因为应用程序使用端口和主机连接到数据库(而不是文件系统上的目录)。

volumes volumes_from 的不同之处在于,第一个只声明docker将永久挂载或主机:来宾挂载的卷,但volumes_from告诉docker使用已在另一台主机上声明的卷(使其对此主机可用)。

在你提出的4个案例中,我认为第一个和第二个是很好的选择。在第一个示例中,您将创建一个data only容器,并让mysql容器使用它。在第二种情况下,数据和mysql容器是相同的。

Linksvolumes在docker文档中有很好的解释。

希望能有所帮助。

票数 26
EN

Stack Overflow用户

发布于 2016-09-04 11:49:59

简而言之:

  1. volumes_from 从其他containers.
  2. volumes 装载定义的connects containers。

更多的解释:

  1. volumes_from从其他容器挂载卷。例如,如果您有只包含数据的容器,并且希望在包含应用程序的容器中挂载这些仅包含数据的容器,则code.
  2. volumes是一种定义和挂载卷的内联方法。如果你阅读#17798,你会发现在大多数情况下,命名卷只能替换数据容器。

最简单的方法就是使用卷。因为您可以通过命名来重用它们,所以them.

  • links是不同的。因为它没有挂载。相反,它连接容器。所以,如果你这样做了:

应用: container_name: app_container链接:- db

这意味着如果您使用docker exec -it app_container bash连接到app_container并尝试ping db,您将看到容器能够解析db的ip。

这是因为docker在容器之间创建了一个network

票数 26
EN

Stack Overflow用户

发布于 2017-06-25 16:30:38

附加:当您想要挂载一个容器的所有非卷时,可以使用Volumes_from -命名的卷可以从早期就直接挂载。

AFAICs https://docs.docker.com/compose/compose-file/#volumes .docker-compose已经完全删除了这一功能,不确定如何、为什么以及是否有替代功能。但是假设你有一个app容器和一个httpd容器。通常,您会将代码库文件夹/var/www定义为anon卷,然后将其挂载到httpd中,以便使用httpd服务提供静态文件,同时将所有动态文件(如ruby/php/java )传递到app上的上游后端。

使用无名卷而不是命名卷的重点是,如果应用程序有一个命名卷,那么实际上你希望能够重新部署应用程序并更改代码库(应用程序更新),这将不起作用。这就是说,anon卷就是这样做的,这就是为什么这里使用volumes_from -使用命名卷不是这种情况下的选择(因为它在许多其他情况下非常实用)。

有关参考,请参阅volumes_from升级指南:https://docs.docker.com/compose/compose-file/compose-versioning/#upgrading

因此,volumes_from通常用于不同的上下文/场景,而命名卷在所有其他情况下是标准的,如上所述。关于这一点的一篇简短的文章是https://stackoverflow.com/a/44744861/3625317

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29306657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档