我有两个Docker容器,一个运行NATS I/O服务器,另一个充当客户端。两个容器彼此隔离。我希望客户端连接到NATS服务器,但我不确定应该使用哪个地址来建立连接。在我的客户端代码中引起混淆的行是:
s = natsConnection_ConnectTo(&conn, "nats://localhost:4222");
字符串我应该使用什么地址来使客户端成功连接到在单独的Docker容器中运行的NATS服务器?任何帮助将不胜感激!
7fhtutme1#
您可以将运行服务器docker run -p 4222:4222的docker容器的端口转发到主机,然后使用docker run --add-host=host.docker.internal:host-gateway通过host.docker.internal通过客户端docker容器访问它https://medium.com/@TimvanBaarsen/how-to-connect-to-the-docker-host-from-inside-a-docker-container-112b4c71bc66
docker run -p 4222:4222
docker run --add-host=host.docker.internal:host-gateway
host.docker.internal
另一种选择是为容器创建一个共享网络。https://docs.docker.com/network/network-tutorial-standalone/的
形成网络的一个简单方法是将它们打包到一个docker compose文件中。然后,您可以通过其各自的服务名称访问它们。https://docs.docker.com/compose/networking/的
1条答案
按热度按时间7fhtutme1#
选项一
您可以将运行服务器
docker run -p 4222:4222
的docker容器的端口转发到主机,然后使用docker run --add-host=host.docker.internal:host-gateway
通过host.docker.internal
通过客户端docker容器访问它https://medium.com/@TimvanBaarsen/how-to-connect-to-the-docker-host-from-inside-a-docker-container-112b4c71bc66
选项二
另一种选择是为容器创建一个共享网络。
https://docs.docker.com/network/network-tutorial-standalone/的
选项三
形成网络的一个简单方法是将它们打包到一个docker compose文件中。然后,您可以通过其各自的服务名称访问它们。
https://docs.docker.com/compose/networking/的