我正在使用DockerOperator运行一个容器。但我没有看到任何相关选项来发布所需的端口。当任务被触发时,我需要发布一个when服务器端口。任何帮助或指南都将是有帮助的。谢谢!
发布于 2021-04-04 22:00:32
首先,别忘了docker_operator已经过时了,(现在)被providers.docker.operators.docker取代了。
其次,我不知道有什么命令可以在活动的(运行的) Docker容器中公开端口。
如来自Sidhartha Mani的this article中所述
具体地说,我需要访问填满的
数据库。。
我可以想出几种方法来做到这一点:
所以:
根据已有的规则,我创建了自己的规则来转发到容器
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/redirect的small 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指令。
https://stackoverflow.com/questions/65157416
复制相似问题