我有一个Docker容器必须与其他主机中的非dockerized应用程序和docker容器进行通信的情况。如何使码头集装箱与非码头应用程序交谈?
假设有三台服务器A,B和C.服务器A有两个运行JBoss App Server容器的Docker容器。服务器B,非docker主机拥有MySQL DB。服务器C有另一组容器。
我希望JBoss应用程序服务器容器与位于另一主机上的MySQL DB连接并从数据库中提取信息。 JBoss还必须谈论服务器C中的容器。
如何使这发生?
PS:我是新来的码头工人在桥/用户自定义桥接网络
嗨@Sreeni不可能在叠加模式下做到这一点?还有一个查询。运行命令中DNS标志的用途是什么?我可以在docker run命令中提供--dns标志指向驻留在服务器B中的数据库吗? –
嗨Aditya,你可以使用覆盖网络连接2个容器,但你需要使用网桥来达到DB的IP。在覆盖网络中,docker_gwbridge提供外部连接。 DNS标志允许您使用外部DNS服务器。默认情况下,docker在Docker引擎中使用dns服务器,并在其中找不到名称,它使用主机的DNS服务器。我在这里捕获了常见的Docker网络问题和解决方案(https://www.slideshare.net/SreenivasMakam/docker-networking-common-issues-and-troubleshooting-techniques)。请看看它是否有帮助。 – Sreeni
嗨@Sreeni我编辑了原始问题。 AFAIK,容器可以是多个网络的一部分。因此,A和C服务器中的容器可以利用覆盖。虽然A和MySQL DB中的容器可以利用用户定义的桥接网络。我对么?但是我仍然困惑如何让容器指向非dockerized应用程序?有没有特定的命令来实现这一点,或者是否有任何特定的标志,如--dns?我很抱歉拿出很多问题:) –