【问题标题】:Is it possible to bind port XXXX on a docker container A to port XXXX or YYYY on docker container B是否可以将 docker 容器 A 上的端口 XXXX 绑定到 docker 容器 B 上的端口 XXXX 或 YYYY
【发布时间】:2017-11-28 09:51:26
【问题描述】:

假设我有一个 docker-compose 文件如下:

version: '2'
services:

  # The php-fpm container
  app:
    build:
      context: ./
      dockerfile: app.dev.dockerfile
    working_dir: /var/www
    volumes:
      - ./:/var/www

    expose:
      - 8003

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    links:
       - app:app

    ports:
      - 80:80
      - 8004:8003

所以我喜欢从 Web 容器中的端口 8004 为 App 容器上的端口 8003 提供服务。 但我无法得到结果。 所以我的猜测是 Web 容器上 8004:8003 的 Web 端口映射仅限于 Web 容器。 还是实际映射到 App 容器上暴露的 8003 端口?

如果是这样,我如何测试 Web 端口 8004 实际上映射到 App 容器上的端口 8003?

有没有办法让我创建单向绑定(甚至更好的双向绑定)或将 App 容器上的端口 8003 映射到 Web 容器上的端口 8004?

如果我的主机正在运行一些 App 和 docker 服务(包括这两个容器),并且 App 试图在 Web 容器中侦听端口 8004,他实际上是在与 App 容器通信。

【问题讨论】:

  • 出于好奇,您为什么要这样做?通过app:8003 到达 App 容器有什么问题?
  • 没问题。我在 App 容器上的端口 8003 上运行 xdebug,但我无法将控制权返回给我的代码。所以我想既然我通过我的 Web 容器提供应用程序容器数据文件,可能应该从 Web 容器本身提供 xdebug 端口。因此问题。我无法通过直接在 App 容器上执行 ports: 8003:8003 来使 xdebug 工作。

标签: docker docker-compose docker-networking docker-network


【解决方案1】:

容器旨在使每个进程保持独立。每个进程/容器都有自己独立的网络堆栈

实现您所描述的从一个容器到另一个容器的“映射”的唯一方法是,如果存在转发请求的用户空间进程。就像 Apache http 或 Nginx 将 HTTP 请求转发到 FastCGI PHP 进程一样。

为了调试,将端口直接映射到app 容器。如果您无法连接,则app 容器中的调试设置可能存在问题。

  # The php-fpm container
  app:
    build:
      context: ./
      dockerfile: app.dev.dockerfile
    working_dir: /var/www
    volumes:
      - './:/var/www'
    ports:
      - '8003:8003'

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app    
    ports:
      - 80:80

顺便说一下,links 不是版本 2+ 连接所必需的。默认情况下,Compose 将创建一个用户定义的网络,该网络允许您的容器之间的访问。

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多