我在我的电脑上运行了一个运行在localhost:1235中的应用程序,我正在尝试对它进行负载测试。
我为docker安装了k6容器来测试它,但当然从docker的性质来看,我的容器有一个不同的本地主机。我在试着理解是怎么回事。
我运行以下命令:docker run -it --rm --net=host -v c:/users/k6:/k6 loadimpact/k6 run /k6/script
我在某处读到--net=host不能在windows上工作,对吗?如何找到主机IP?
我试着通过这个教程运行:http://blog.michaelhamrah.com/2014/06/accessing-the-docker-host-server-within-a-container/
我发现172.17.0.1的IP在我的测试中不起作用。
我也尝试添加-p 1235:1235,但它失败了,我猜docker试图绑定这个端口并转发到它。
先谢谢你,查姆
发布于 2020-09-25 18:43:16
在您的k6脚本中,使用url host.docker.internal来访问主机上运行的内容。
例如,访问在主机http://localhost:8080上运行的服务
// script.js
import http from "k6/http";
import { sleep } from "k6";
export default function () {
http.get("http://host.docker.internal:8080");
sleep(1);
}然后,在windows或mac上,可以使用以下命令运行:
$ docker run -i loadimpact/k6 run - <script.js对于linux,您需要一个额外的标志
$ docker run --add-host=host.docker.internal:host-gateway -i loadimpact/k6 run - <script.js参考文献:
https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds
:
发布于 2017-10-24 19:08:49
docker实例中的k6应该能够连接到您主机上的“公共”IP -在您的以太网或Wifi接口上配置的IP。您可以执行ipconfig /all命令来查看所有接口及其IP。
在我的苹果电脑上,我可以这样做:$ 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服务器,然后执行URL镜像,并告诉它访问基于主机上面向外部的物理en1接口的IP地址的k6。在你的例子中,在Windows上,你可以使用ipconfig来找出你的面向外部的IP。
https://stackoverflow.com/questions/46877351
复制相似问题