从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。 您可以使用默认的(桥接)。
只需使用ip
或ifconfig
(在我的情况下是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