【问题标题】:docker linking not working码头工人链接不起作用
【发布时间】:2018-08-11 10:30:24
【问题描述】:

我的本​​地机器上有两个来自我的两个 Spring Boot 应用程序的 docker 容器

  1. Eureka 发现客户端(发现)
  2. 我的服务(验证)

我必须向 Eureka 客户端注册 myservice。当我在本地运行这两个 Spring Boot 应用程序时,我能够做到这一点。但是当我创建图像时它没有链接。

docker run -d -p 7070:7070 -t --name validation --link discovery docker-crst/bosng_validationsservice

docker run -d -p 8761:8761 -t --name discovery docker-crst/discovery-service

【问题讨论】:

  • 如果以上是您创建容器的顺序,那么如果它还没有运行,您为什么希望验证知道发现?
  • 尝试先启动容器发现然后验证。您不能链接到未运行的容器。或者,您可以为这两个容器创建一个网络,那么您启动容器的顺序将不再重要。

标签: docker microservices netflix-eureka


【解决方案1】:

根据 docker documentationlinks 功能已弃用,不应再使用。相反,创建桥接网络并将容器附加到该网络的方法应该开箱即用地按名称提供 docker 容器引用。

默认情况下,docker 会创建一个名为 docker0 的网桥,该网桥会被该主机上的所有容器自动加入。但是,如果您创建自己的桥接网络并将容器添加到该网络,则可以通过它们之间的名称直接引用它们。在这种情况下,请参阅 docker 文档:https://docs.docker.com/network/bridge/#differences-between-user-defined-bridges-and-the-default-bridge

在你的情况下,这将是:

$> docker network create test01
$> docker run -d -p 7070:7070 -t --net test01 --name validation docker-crst/bosng_validationsservice
$> docker run -d -p 8761:8761 -t --net test01 --name discovery docker-crst/discovery-service

在本例中,两个容器可以通过名称相互引用。

【讨论】:

    猜你喜欢
    • 2016-01-18
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多