计算机系统应用教程网站

网站首页 > 技术文章 正文

Docker中udp收发问题--workerman docker tcpdump

btikc 2024-10-12 11:13:24 技术文章 6 ℃ 0 评论

如今的运维已经是docker,k8s的时代了,今天记录下一次docker下的udp协议收发的调试过程。

首先我们用的tp框架,用到了topthink/think-worker这个包。开启workerman的命令如下:php think worker:server。然后我配置了docker,用了php:7.2-fpm这个镜像,安装了pcntl包。用的docker-compose,代码如下:

  php-fpm:
    build: ./conf/php/
    ports:
      - ${PHPFPM_PORT}:9000
      - 9003:9003/udp
    volumes:
      - ${APPLICATION}:/var/www/html:rw
    networks:
      - webnet

于是乎我想用下面的启动语句:

docker-compose run php-fpm php think worker:server

启动成功了,但是docker中无法正常接收到来自宿主机的udp数据。于是乎怀疑udp数据无法进入到docker中,一顿google百度后,打算去docker中抓包看看,是否有udp数据。于是在php-fpm容器中用tcpdump进行抓包。

 apt-get update
 apt-get install -y tcpdump
 tcpdump -i eth0 port 9003

成功抓到udp的数据包,于是乎在一顿stackoverflow,github后,还是没有头绪。最终机缘巧合,在docker中开启workerman,成功接收到数据。即:

 docker exec -it XXXXXXXX sh
 php think worker:server

这个问题有可能是权限造成,具体没有继续深入挖掘。

附带记录下,如果workerman关不掉,有可能是vendor-》workerman下面的_var_www_html_think.pid中的数字为1,删除这个文件再重启workerman即可。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表