从docker容器访问本地主机端口

时间:2017-12-19 16:32:41

标签: docker

我正在使用Landoop快速数据开发并暴露容器的-p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 9092:9092。

docker run --rm -it -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 
 -p 9092:9092 -e ADV_HOST=127.0.0.1 --name=containerA landoop/fast-data-dev

当我通过localhost在主机上使用时,可以访问这些内容。 但是当我使用

运行另一个容器时

docker run -it --rm --net=host --name containerB mytest/containerB

1)如何从containerB访问containerA的上述暴露端口? 我确实意识到MAC我们必须使用docker.for.mac.localhost而不是localhost。我如何确认这些端口是否可以从docker.for.mac.localhost(即containerB)访问?任何帮助表示赞赏。感谢。

3 个答案:

答案 0 :(得分:0)

为了让两个不同的容器协同工作,我使用docker-compose在它们之间创建一个虚拟网络

官方文档:https://docs.docker.com/compose/networking/#links

答案 1 :(得分:0)

对于能够进行通信的容器,他们需要共享虚拟网络。

docker network create my-net

docker run --rm -it --network my-net -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 -p 9092:9092\
 -e ADV_HOST=127.0.0.1 --name=containerA landoop/fast-data-dev

docker run -it --rm  --network my-net --name containerB mytest/containerB

现在,containerB可以使用http://containerA:<port>

与containerA进行通信

答案 2 :(得分:0)

https://github.com/Landoop/kafka-connectors-tests,您可以看到多个泊坞广告是如何组合在一起的,即fast-data-dev + elastic-search,以便通过向Kafka生成数据然后运行https://github.com/Landoop/stream-reactor来运行集成测试Kafka连接器将数据写入弹性搜索等。

集成测试的结果发布在:

http://coyote.landoop.com/connect/