我在主机上运行的应用程序具有以下功能:它侦听端口4001(可配置),并且仅接受来自受信任IP地址白名单的连接(默认情况下仅127.0.0.1,可以添加其他地址,但可以添加一个)一,不使用口罩)。
(这是在Java中运行的交互式经纪人网关应用程序,但我认为这并不重要)
我在Docker容器中运行了另一个需要连接到主机应用程序的应用程序。
(这是一个访问IB API的python应用程序,但同样,我认为这并不重要)
最终,我将在多台机器上拥有多个容器来尝试执行相同的操作,但是我什至无法使其与在同一台计算机上运行的容器一起使用。
sudo docker run -t myimage Error: Couldn't connect to TWS. Confirm that "Enable ActiveX and Socket Clients" is enabled on the TWS "Configure->API" menu.
(主机上的IB网关无响应)
理想情况下,我将能够设置docker容器/桥接器,以便所有docker容器看起来好像它们位于特定IP地址上一样,将其添加到白名单中,然后瞧。
我尝试过的
1)使用-p和EXPOSE
须藤码头运行-t -p 4001:4001 myimage
绑定0.0.0.0:4001失败:端口已分配。
(网关未响应)
这要么无效,要么导致“端口已在使用中”冲突。我收集到这些设置是针对相反的问题(主机看不到容器上的特定端口)而设计的。
2)设置--net = host
sudo docker运行-t --net = host myimage
读取套接字时捕获异常-对等方重置连接
(网关未响应)
这应该可行,因为docker容器现在看起来应该是127.0.0.1 ...但事实并非如此。
3)设置--net = host并将本地主机的真实IP地址192.168.0.12(如注释中所述)添加到白名单中
sudo docker运行-t --net = host myimage
读取套接字时捕获异常-对等方重置连接
(网关未响应)
4)将172.17.0.1,... 2,... 3添加到主机应用程序的白名单中(网桥网络为172.17.0.0,随后的容器在此范围内分配)
sudo docker run -t myimage Error: Couldn't connect to TWS. Confirm that "Enable ActiveX and Socket Clients" is enabled on the TWS "Configure->API" menu.
(主持人未回应)
这是骇人听闻的技巧,但无法正常使用。
PS注意,这与尝试在容器内运行主机应用程序IB网关的问题不同-我没有这样做。
我不想在另一个容器中运行主机应用程序,尽管在某些方面这可能是更整洁的解决方案。