[英]Using k6 on docker to test a localhosted site
我的计算机上有一个应用程序在 localhost:1235 中运行,我正在尝试对其进行负载测试。
我为 docker 安装了 k6 容器来测试它,但是当然从 docker 的性质来看,我的容器有一个不同的 localhost。 我试图了解做什么。
我运行以下命令: docker run -it --rm --net=host -vc:/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/
我找到的 IP 172.17.0.1 在我的测试中不起作用。
我也尝试添加-p 1235:1235
但它失败了,我猜 docker 试图绑定这个端口并转发到它。
提前致谢,柴姆
在您的 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
参考资料:
docker 实例中的 k6 应该能够连接到主机上的“公共”IP - 在以太网或 Wifi 接口上配置的 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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.