在docker上使用k6来testing一个本地主机的站点

我有一个应用程序运行在我的电脑localhost:1235,我试图加载testing它。

我安装了Docker的k6容器来testing它,但是当然从Docker的性质来说,我的容器有一个不同的本地主机。 我正在试图理解什么。

我运行以下命令: docker run -it --rm --net=host -vc:/users/k6:/k6 loadimpact/k6 run /k6/script

我读了一个地方–net =主机不能在Windows上工作,是吗? 我如何find主机IP?

我已经尝试通过本教程运行: http : //blog.michaelhamrah.com/2014/06/accessing-the-docker-host-server-within-a-container/

我发现172.17.0.1的IP在我的testing中不起作用。

我也尝试添加-p 1235:1235但它失败了,我猜Docker试图绑定这个端口并转发给它。

在此先感谢,Chaim

Docker实例中的k6应该能够连接到主机上的“公共”IP地址 – 在以太网或Wifi接口上configuration的IP地址。 你可以做一个ipconfig /all来查看你所有的接口和他们的IP。

在我的Mac上,我可以这样做: $ python httpserv.py & [1] 7824 serving at port 8000 $ ifconfig en1 en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether b8:09:8a:bb:f7:ed inet6 fe80::148f:5671:5297:fc24%en1 prefixlen 64 secured scopeid 0x5 inet 192.168.0.107 netmask 0xffffff00 broadcast 192.168.0.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active $ echo 'import http from "k6/http"; export default function() { let res = http.get("http://192.168.0.107:8000"); console.log(res.status); };' |docker run -i loadimpact/k6 run - $ python httpserv.py & [1] 7824 serving at port 8000 $ ifconfig en1 en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether b8:09:8a:bb:f7:ed inet6 fe80::148f:5671:5297:fc24%en1 prefixlen 64 secured scopeid 0x5 inet 192.168.0.107 netmask 0xffffff00 broadcast 192.168.0.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active $ echo 'import http from "k6/http"; export default function() { let res = http.get("http://192.168.0.107:8000"); console.log(res.status); };' |docker run -i loadimpact/k6 run -

即,我在主机的8000端口上启动一个简单的HTTP服务器,然后执行k6 docker镜像,并通知主机根据主机上物理的,面向外的en1接口的IP地址访问URL。 在你的情况下,在Windows上,你可以使用ipconfig找出你的外部IP。