首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DockerOperator暴露端口

使用DockerOperator暴露端口
EN

Stack Overflow用户
提问于 2020-12-05 21:30:43
回答 1查看 218关注 0票数 1

我正在使用DockerOperator运行一个容器。但我没有看到任何相关选项来发布所需的端口。当任务被触发时,我需要发布一个when服务器端口。任何帮助或指南都将是有帮助的。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-04-04 22:00:32

首先,别忘了docker_operator已经过时了,(现在)被providers.docker.operators.docker取代了。

其次,我不知道有什么命令可以在活动的(运行的) Docker容器中公开端口。

如来自Sidhartha Manithis article中所述

具体地说,我需要访问填满的

数据库。。

我可以想出几种方法来做到这一点:

  • 停止容器并使用添加的端口暴露启动一个新的容器。第二个选项是启动另一个链接到此的容器,并知道如何通过forward.
  • Setup iptables规则将主机端口转发到容器中。

所以:

根据已有的规则,我创建了自己的规则来转发到容器

iptables -t nat -D DOCKER!-i docker0 -p tcp --dport 3306-j DNAT \--到目的地172.17.0.2:3306

这就是说,只要数据包的目的地是主机上的端口3306,就将其转发到ip为172.17.0.2的容器及其端口3306。

完成此操作后,我可以使用主机端口3306连接到容器。

我想让其他人更容易在活动容器上公开端口。

因此,我创建了一个名为wlan0/redirectsmall repository and a corresponding docker image

使用此命令可以达到与将主机端口3306暴露给容器172.17.0.2:3306相同的效果。

此命令省去了学习如何使用iptables的麻烦。

docker运行--特权主机/proc:/ -v /proc\ -e HOST_PORT=3306 -e DEST_IP=172.17.0.2 -e DEST_PORT=3306 \wlan0/redirect:最新

换句话说,这种解决方案不会通过在容器中运行的命令,通过气流操作符来实现。

根据我的理解,DockerOperator会创建一个新的容器,那么为什么在创建新的容器时没有办法公开端口。

首先,正如我mentioned here所说,EXPOSE部分只是一个添加到图像中的元数据。这不是强制性的。

运行时(docker run) -p选项用于发布,而不是公开:发布端口并将其映射到主机端口(参见上文)或另一个容器端口。

在有默认网络甚至possibility to setup a custom network or subnetwork的气流环境中,这可能不是必需的。

这意味着连接到同一网络的其它(气流)容器应当能够访问所述网络中的任何容器的端口,而不需要任何-p (发布)或EXPOSE指令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65157416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档