当前位置: 首页 > 面试题库 >

如何将端口从一个Docker容器转发到另一个?

卫诚
2023-03-14
问题内容

我通常会看到将Docker容器的端口暴露给主机的解决方案。

就我而言,我想将本地端口从一个容器转发到另一个。假设我在具有 硬编码配置的 容器A 上运行服务, 以访问localhost
3306上的db
。但是我想在 容器B 上运行数据库服务器。

从A-localhost:3306到B-IP:3306的 端口转发的最佳方法是什么?


问题答案:

socat在您的容器中安装并在启动运行时安装

socat TCP-LISTEN:3306,fork TCP:B-IP:3306 &

这将在您的3306上进行本地侦听,并将任何流量双向传递给B-IP:3306。socat在名为socat的软件包中可用。因此,您将运行以下任何命令来安装它

$ yum install -y socat
$ apt install -y socat
$ apk add socat

编辑1

您甚至可以通过不触摸原始容器来执行此操作

Docker文件

FROM alpine
RUN apk update && apk add socat

如下构建文件

docker build -t socat .

现在从同一个容器运行

docker run --name mysql-bridge-a-to-b --net=container:<containerAid> socat socat TCP-LISTEN:3306,fork TCP:BIP:3306

这将在A的网络上运行此容器。因此,当它在A的网络上侦听时,localhost:3306即使A容器未被触摸,它也将在A中可用。



 类似资料:
  • 在Ubuntu 20.04上运行新的Docker 20.10.1。此版本包括对主机的支持。码头工人。Linux上dockerd中的内部 我在使用SSL证书的容器中运行了一系列服务,我想使用Telegraf(稍后发送到Grafana仪表板)检查证书是否过期。 所有带有网络接口和Telegraf的服务都运行在同一个Docker主机上。所有服务都在自己的网桥网络中。我想在端口9000上从Telegraf

  • 我有两张docker的照片。其中一个docker映像(来自第一个容器)在运行时会生成一些文件,这些文件需要由另一个容器使用。 我可以这样做吗?

  • 问题内容: 我和一个拥有我所有资产的工具都来自grunt或其他一些工具。 现在在docker compose文件中,我想将的文件夹路径装入到其中,以便nginx可以提供该文件。 我们该怎么做?我不记得了,但我认为有一种选择可以使我们将一个容器的路径与另一个容器共享。 假设如果我将nginx扩展到2个容器,那么该安装将适用于所有nginx实例吗? 如果我扩大规模,那会发生什么? 我也想将其安装在主机

  • 我想在一个docker容器中运行Rabbitmq服务器,并使用芹菜从另一个容器连接到它(http://celeryproject.org/) 我已使用以下命令运行rabbitmq。。。 然后通过 当我试图做非常基本的教程来验证http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html 我得

  • 问题内容: 主机可以打开Docker容器访问端口吗?具体来说,我在主机上运行了MongoDB和RabbitMQ,我想在Docker容器中运行一个进程以侦听队列并(可选)写入数据库。 我知道我可以将端口从容器转发到主机(通过- p选项),并可以从Docker容器中连接到外部环境(即Internet),但我不想公开RabbitMQ和MongoDB端口从主持人到外界 编辑:一些澄清: 我必须执行此技巧才

  • 问题内容: 我基于两个不同的图像创建了两个docker容器。一个数据库,另一个用于网络服务器。这两个容器都在我的Mac OS X上运行。 我可以从主机访问数据库容器,也可以从主机访问Web服务器。 但是,如何从Web服务器访问数据库连接? 我启动数据库容器的方式是 我开始了wls容器作为 我可以通过连接到主机上的数据库 我可以以以下方式访问主机上的wls: 问题答案: 最简单的方法是使用–link