从Docker镜像中打一个在本地主机上运行的服务

我在Mac OS上,我有一个服务运行在我的机器localhost:8000

现在我想推出一个docker形象,并从这里打这个服务。

我做了一个docker桥,我从里面使用它,但它不工作。 这是我的步骤:

我的主机IP:

ifconfig en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 98:01:a7:b0:2b:41 inet 192.168.0.70 netmask 0xffffff00 broadcast 192.168.0.255 media: autoselect status: active 

我从主持人打我的服务:

 curl localhost:8000 #this is working! 

我创造了一座桥梁,并使用它:

 docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 dockernet docker run --rm -it -v "$(pwd):/src" --network=dockernet qatests /bin/bash 

从docker里面,我做一个curl,但它不工作:

 curl 192.168.0.1:8000 #it's not working :-( 

有任何想法吗?

你不需要创build一个新的networking。 您可以使用默认的(桥接)。

只需使用ipifconfig (在我的情况下是172.17.42.1 )检查你的主机上的docker0接口与哪个ip相关联,然后在容器内使用该ip:

 $ curl 172.17.42.1:8000 

最后,我发现,如果我ping我的电脑ip,我甚至可以从docker图像看到它。 为了方便起见,我做了一个小女巫得到我目前的IP,并启动docker的形象,使我的IP在“我的地址”地址访问所以我做了什么是午餐

 MY_IP=$(ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}') docker run --rm -it -v "$(pwd):/src" --add-host=mymac:$MY_IP qatests /bin/bash 

在docker我现在可以午餐:

 curl mymac:8000 #it works! now mymac is my pc outside docker