代码之家  ›  专栏  ›  技术社区  ›  Ragul

连接两个docker容器[重复]

  •  23
  • Ragul  · 技术社区  · 8 年前

    3 回复  |  直到 8 年前
        1
  •  41
  •   nivox    8 年前

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

    1. 在不同主机上运行的容器之间不支持链接

    --net 在指定网络上启动容器的选项:

    docker network create example
    docker run -d --net example --name container1 <image>
    docker run -d --net example --name container2 <image>
    

    此时,2个容器可以通过地址相互访问 <container-name>.example :即 container1.example container2.example .

        2
  •  5
  •   mkrieger1 djuarezg    5 年前

    --link 该功能现在被认为是遗留的,是docker不推荐使用的主要候选功能。 最简单的方法是使用

    depends_on:
    

    docker network create <network_name>
    

    然后使用docker compose生成相互绑定的服务。看看下面的例子,我将我的spring boot应用程序绑定到rabbit mq。你可以从中克隆我的回购 here

    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
    

    看看我是如何创建一个名为 resolute 并将应用程序绑定到同一个网络。我还为rabbitmq容器提供了一个 hostname

        3
  •  -2
  •   vegiops    8 年前

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