外挂docker工具镜像至某个运行中的container
2021-01-27 本文已影响0人
小昔小怪兽
场景
开发环境需要进入pod内部压测代理的性能(压测工具选择wrk),但是容器内部没有wrk
方法一:
通过yum之类安装
[root@instantbox_managed_f2vl5siwqutrkj89 home]# yum install -y https://github.com/scutse/wrk-rpm/releases/download/4.1.0/wrk-4.1.0-1.el7.centos.x86_64.rpm
[root@instantbox_managed_f2vl5siwqutrkj89 home]# wrk
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
缺点:yum适用于Redhat、CentOS、Suse等平台,我们的镜像不是基于此类型基础镜像打包,需要额外安装yum包管理。
方法二:
通过外挂工具镜像 williamyeh/wrk 至container的命名空间
docker run -ti --pid container:${CONTAINER_ID} --network container:${CONTAINER_ID} --cap-add sys_admin williamyeh/wrk -t 1 -c 1 http://www.baidu.com/ -d 1m
主要使用了
--pid 参数,使我们新起的工具镜像williamyeh/wrk 加入到特定容器的PID命名
--network参数,进入特定容器的网络命名空间
这样就达到了我们在特定pod内进行压测的目的,并且无需额外安装其他命令。
这种方法适用于其他需要在线调试container的场景,比如gdb、tcpdump之类。