外挂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之类。

上一篇下一篇

猜你喜欢

热点阅读