android - 从在 Docker 中运行的 Android 模拟器连接到 Redis

标签 android docker redis android-emulator

我有一个在主机上运行的 Redis 服务器(端口 6379,没有公共(public) IP)。在这个主机上还有一个docker容器在运行,在这个docker容器里面有一个Android模拟器。如何从 Android 模拟器中运行的应用程序连接到主机上的 Redis 服务器。 我认为应该有一种方法可以创建适当的端口转发。

主机可以是运行 Ubuntu 或 MAC 的 AWS EC2 实例。

# Inside docker container
# ip route
default via 172.17.0.1 dev eth0 
10.0.0.0/24 via 172.17.0.1 dev eth0 
172.17.0.0/16 dev eth0  proto kernel  scope link  src 172.17.0.4 

# Inside android emulator
# ip route
default via 10.0.2.2 dev eth0 
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15 
10.0.2.2 dev eth0  scope link 
172.217.7.238 via 10.0.2.2 dev eth0 

所以我可以使用 docker.for.mac.host.internal(或较新版本的 host.docker.internal)从 Docker 容器连接到它的主机,我可以使用 10.0.2.2 从 Android 模拟器连接到它的主机。所以问题是如何直接从 Android 模拟器连接到 Redis?

最佳答案

将您的主机 Redis 连接到在容器内运行的模拟器:

  • 在您的模拟器设置中使用 Docker Default Bridge IP
  • 在运行模拟器容器时使用 --network=host 传递 Docker 容器网络。这样容器将连接到您的主机网络,模拟器可以通过 localhost 连接到 Redis。 (这种方式有点不安全)

关于android - 从在 Docker 中运行的 Android 模拟器连接到 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50912479/

相关文章:

java - 如何在我的应用程序中将图像文件发送到 NAS 服务器?

docker - 如何运行使用 go binary 创建的 docker 容器?

optimization - 如何使用值作为 redis 中的列表对这个哈希进行建模?

php - Laravel 5.6 降低 redis 队列性能

nosql - Redis 在尝试保存时返回错误

android - 仅适用于 Android Studio 中设计预览选项卡的 xml View 的占位符

android - 如何在不丢失分辨率的情况下放大和缩小位图?

java - android:onListItemClick 不起作用

c++ - 在windows docker容器中编译Qt5项目

docker - 如何管理AWS ECS中docker镜像的版本?