Хит службу, запущенную на локальном хосте изнутри изображения докеров

Я нахожусь на mac os, у меня есть служба, работающая на моей машине на localhost: 8000

теперь я хочу запустить изображение докеров и нажать здесь эту услугу.

Я сделал докер-мост, и я использую его изнутри, но он не работает. Вот мои шаги:

Мой хост 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 

изнутри докера, я делаю завиток, но он не работает:

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

есть идеи?

Вам не нужно создавать новую сеть. Вы можете использовать один по умолчанию (мост).

Просто проверьте, какой ip связан с интерфейсом docker0 на вашем хосте с ip или ifconfig (в моем случае это 172.17.42.1 ) и используйте этот ip изнутри контейнера:

 $ curl 172.17.42.1:8000 

В конце концов, я обнаружил, что если я ping pc ip, я могу видеть это даже из изображения докеров. Для удобства я сделал сценарий lounch, который получил мой текущий IP-адрес и запустил изображение докеры, сделав мой ip доступным под адресом «mymac». Так что я сделал ланч

 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 

внутри докер Теперь я могу пообедать:

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