连接两个docker容器

连接两个docker容器,docker,docker-compose,dockerfile,docker-swarm,Docker,Docker Compose,Dockerfile,Docker Swarm,我有两个现有的docker容器web和db。我想将这两个容器链接起来,以便它们能够相互通信。如果我使用--link命令,则意味着它将把web链接到一个新的映像,而不是数据库。link用于连接容器,以便它们可以在建立通信后彼此通信,它们将能够与您的数据库通信 在docker网络出现之前,使用--link是连接容器的唯一方法。这为集装箱间通信问题提供了“更清洁”的解决方案,同时解决了链路的两个主要限制: 重新启动链接容器会断开链接 在不同主机上运行的容器之间不支持链接 使用docker网络,您可以使

我有两个现有的docker容器web和db。我想将这两个容器链接起来,以便它们能够相互通信。如果我使用--link命令,则意味着它将把web链接到一个新的映像,而不是数据库。

link
用于连接容器,以便它们可以在建立通信后彼此通信,它们将能够与您的数据库通信

在docker网络出现之前,使用
--link
是连接容器的唯一方法。这为集装箱间通信问题提供了“更清洁”的解决方案,同时解决了链路的两个主要限制:

  • 重新启动链接容器会断开链接
  • 在不同主机上运行的容器之间不支持链接
  • 使用docker网络,您可以使用
    --net
    选项在指定网络上启动容器:

    docker network create example
    docker run -d --net example --name container1 <image>
    docker run -d --net example --name container2 <image>
    
    docker网络创建示例
    docker run-d--net示例--name container1
    docker run-d--net示例--name container2
    

    此时,可以通过地址
    相互访问2个容器。示例
    :即
    容器1。示例
    容器2。示例

    ,仅为了使偶然发现此问题的人受益。
    --link
    功能现在被认为是遗留的,是docker不推荐使用的主要候选功能。 最简单的方法是使用

    depends_on:
    
    为此,建议首先创建如下网络:

    docker network create <network_name>
    

    看看我是如何创建一个名为
    resolute
    的网络,并将应用程序绑定到同一个网络的。我还为我的rabbitmq容器提供了一个
    hostname
    。这是因为docker现在预先添加了容器名称,这使得按名称绑定服务变得困难。

    谢谢您的解释。现在我明白了。
    --link
    现在不推荐使用!我真的很欣赏--net的例子。将试用它。使用--net它将位于特定的IP下。但这两个容器都有不同的IP,如子网IP。例如:网络IP为180.12.10.0意味着,容器IP将分别为180.12.10.1和180.12.10.2?docker主机上可以存在的网络数量是否有限制?
    version: "3.1"
    services:
      rabbitmq-container:
        image: rabbitmq:3.5.3-management
        hostname: rabbitmq-container
        ports:
          - 5673:5673
          - 5672:5672
          - 15672:15672
        networks:
          - resolute
    
      resolute-container:
        build: .
        ports:
          - 8080:8080
        environment:
          - spring_rabbitmq_host=rabbitmq-container
          - spring_rabbitmq_port=5672
          - spring_rabbitmq_username=guest
          - spring_rabbitmq_password=guest
          - resolute_rabbitmq_publishQueueName=resolute-run-request
          - resolute_rabbitmq_exchange=resolute
        depends_on:
          - rabbitmq-container
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        networks:
          - resolute
    
    networks:
      resolute:
        external:
          name: resolute