docker appium无法通过tcpip连接远程模拟器——一个排查了三天的问题

1|0出现了什么问题


最近要整理下pytest-xdist方面的资料,但是尝试通过虚拟机远程连接模拟器的时候,都是报如下的超时:

2|0解决思路


2|1思路一:换模拟器,失败


因为我用的逍遥模拟器,尝试换成夜神模拟器,连接超时

2|2思路二:把桥接ip换成和虚拟机一样的ip地址,失败


这种直接会报一个连接拒绝

2|3思路三:把桥接静态ip换成DHCP,失败


DHCP是动态分配的ip,所以和静态ip的效果差不多,连接超时

2|4思路四:重启路由器,失败


连接超时

2|5思路五:删除旧容器,创建新容器


就在这一步执行的过程中,偶然发现了异常之处,这里贴下源码看下

[root@localhost ~]# docker run --privileged -d -p 4725:4723 --name appium appium/appium **WARNING: IPv4 forwarding is disabled. Networking will not work.** 6a5cfdea75630c0fe4494de6ea28e4e9c31b1a93f3b11adf627e92486fcaa980 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a5cfdea7563 appium/appium "/bin/sh -c '/root/w…" 28 seconds ago Up 3 seconds 4567/tcp, 0.0.0.0:4725->4723/tcp appium [root@localhost ~]# docker exec -it appium adb connect 192.168.0.106:7777 * daemon not running; starting now at tcp:5037 * daemon started successfully failed to connect to '192.168.0.106:7777': Connection timed out [root@localhost ~]# vim /usr/lib/sysctl.d/00-system.conf [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a5cfdea7563 appium/appium "/bin/sh -c '/root/w…" 6 minutes ago Up 5 minutes 4567/tcp, 0.0.0.0:4725->4723/tcp appium [root@localhost ~]# systemctl restart network [root@localhost ~]# docker rm -f appium appium [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc5f8a08abd1 centos:7.6.1810 "/bin/bash" 2 months ago Exited (137) 2 months ago elastic_cori [root@localhost ~]# docker run --privileged -d -p 4725:4723 --name appium appium/appium 9e4cb3a76ab1f8d79c07472e6eb673d3886606c1ce1d4cdcc88fe57f42f3a34f [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e4cb3a76ab1 appium/appium "/bin/sh -c '/root/w…" 5 seconds ago Up 4 seconds 4567/tcp, 0.0.0.0:4725->4723/tcp appium [root@localhost ~]# docker exec -it appium adb connect 192.168.0.106:7777 * daemon not running; starting now at tcp:5037 * daemon started successfully connected to 192.168.0.106:7777 [root@localhost ~]#

这里的错误是WARNING: IPv4 forwarding is disabled. Networking will not work,这是IPV4转发功能已经禁用,会导致主机中的容器无法与其他主机进行通信

解决办法

[root@localhost ~]# vi /usr/lib/sysctl.d/00-system.conf # 写入如下配置,保存退出 net.ipv4.ip_forward=1 #重启网络服务 [root@localhost ~]# systemctl restart network

从上面贴的代码可以看到,连接成功了

3|0注意


  1. 夜神模拟器重启后设置的静态ip和实际获得的ip不一样

  2. 逍遥模拟器设置的静态ip和实际获得的ip一样,但首先要切换MAC地址,再重启


  3. 设置桥接不能和虚拟机的ip相同,否则会出现两个问题:一个是把xshell连接断开,一个是docker appium adb连接模拟器时被拒绝

4|0参考文章


《docker : 报错 WARNING: IPv4 forwarding is disabled. Networking will not work.》


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/13310263.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(594)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-07-15 request方法传入动态参数的一个"误区"
2018-07-15 接口自动化测试(二)
2018-07-15 接口自动化测试(一)
点击右上角即可分享
微信分享提示