从localhost:port中的其他Docker容器到达Docker容器

时间:2019-10-31 09:39:37

标签: docker docker-compose dockerfile

当前撰写的yaml:

version: '3.7'

networks:
  app-tier:
    driver: bridge

services:
  php:
    container_name: docker_php
    build: .docker/php73
    volumes:
      - .:/srv/
    networks:
      - app-tier

  rabbitmq:
    container_name: docker_rabbitmq
    image: "rabbitmq:3-management"
    hostname: "rabbitmq-localhost"
    environment:
        RABBITMQ_DEFAULT_USER: guest
        RABBITMQ_DEFAULT_PASS: guest
    ports:
      - "15672:15672"
      - "5672:5672"
    networks:
      - app-tier

我的目标是从localhost中的docker_php到达docker_rabbitmq容器:

#bash php_container
telnet loaclhost 15672

如何配置以下网络:

容器A在本地主机上有端口映射到容器B?

1 个答案:

答案 0 :(得分:0)

您受内部端口的限制,这意味着,如果您的两个容器在同一docker定义的网络中,则可以使用相应容器的内部打开的端口。对于要在另一个容器中定义的hostname,可以在links内部的服务定义中使用docker-compose.yml属性。

考虑一个微服务,您只希望仅由该网络上的容器访问该微服务,因此公开主机上的端口没有任何意义。现在假设rabbitmq是您要从php服务访问的服务,则需要在rabbitmq服务定义中定义指向php的链接(请不要链接/主机定义不是双向的,如果您需要在php中使用rabbitmq,则需要在rabbitmq中为php)定义一个链接

version: '3.7'

networks:
  app-tier:
    driver: bridge

services:
  php:
    container_name: docker_php
    build: .docker/php73
    volumes:
      - .:/srv/
    networks:
      - app-tier
    links:
      - rabbitmq

  rabbitmq:
    container_name: docker_rabbitmq
    image: "rabbitmq:3-management"
    hostname: "rabbitmq-localhost"
    environment:
        RABBITMQ_DEFAULT_USER: guest
        RABBITMQ_DEFAULT_PASS: guest
    networks:
      - app-tier

现在您可以从rabbitmq访问php的内部端口,但是请注意,外部端口不可访问,这些端口用于主机。

# inside your `php` container `bash`
telnet rabbitmq <internal_port>

我不是通过删除来摆脱rabbitmq中的端口

现在主机上无法访问rabbitmq的这些端口。

更新

如果要访问端口,以便在rabbitmq中打开的端口可以在本地主机上的php中访问。最简单的方法是将rabbitmq配置为在php的网络上以容器网络模式运行以执行此简单添加操作 network_mode:“容器:[容器名称/ ID]”

rabbitmq:
    container_name: docker_rabbitmq
    image: "rabbitmq:3-management"
    hostname: "rabbitmq-localhost"
    environment:
        RABBITMQ_DEFAULT_USER: guest
        RABBITMQ_DEFAULT_PASS: guest
    network_mode: "container:php"
    ports:
        - "15672:15672"
        - "5672:5672"