根据Docker Compose的compose-file documentation:
-
depends_on
- 服务之间的快速依赖关系 . -
links
- 链接到另一个服务中的容器,并且 express dependency between services 与depends_on相同 .
我不明白链接到其他容器的目的,所以两个选项之间的差异对我来说似乎仍然很难 .
如果有一个例子会更容易,但我找不到任何例子 .
我注意到,当我将容器B与容器A链接时,容器B将在容器A的shell内“ping” .
我在容器A的 bash
中运行了 ping B
并得到了这样的结果(仅供参考,来自互联网的图像)
2 回答
这个答案适用于docker-compose version 2 ,它也适用于 version 3
You can still access the data when you use depends_on.
如果查看docker docs Docker Compose and Django,您仍然可以像这样访问数据库:
链接和depends_on有什么区别?
links:
为数据库创建容器时,例如:
你可能会发现
这意味着您可以从localhost端口32777(容器中的3306)连接数据库,但每次重新启动或删除容器时此端口都将更改 . 因此,您可以使用链接确保始终连接到数据库,而不必知道它是哪个端口 .
depends_on:
我从Giorgio Ferraris找到了一个不错的博客Docker-compose.yml: from V1 to V2
和
更新
depends_on
服务之间的快速依赖关系,有两个影响:
docker-compose up将按依赖顺序启动服务 . 在以下示例中,db和redis将在web之前启动 .
docker-compose up SERVICE将自动包含SERVICE的依赖项 . 在以下示例中,docker-compose up web还将创建并启动db和redis .
简单的例子:
[2016年9月更新]:此答案适用于docker撰写文件v1(如下面的示例撰写文件所示) . 对于v2,请参阅@Windsooon的其他答案 .
[原始答案]:
在文档中很清楚 . depends_on决定了容器创建的依赖性和顺序,links不仅是这些,而且也是
例如,假设以下
docker-compose.yml
文件:使用
links
,web
内的代码将能够使用db:5432
访问数据库,假设端口5432在db
图像中公开 . 如果使用了depends_on
,则无法实现,但容器的启动顺序是正确的 .