android - java.net.SocketTimeoutException : failed to connect to/172. 18.0.1(端口8008)来自/192.168.2.5(端口46198)10000ms后

标签 android docker docker-compose virtual-machine hyperledger-sawtooth

我正在构建一个运行锯齿 SDK 的移动应用程序。我想向我的锯齿网络提交交易,但收到此错误:java.net.SocketTimeoutException: failed to connect to/172.18.0.1 from/192.168.2.5 (port 46198) after 10000ms

我使用的是带有桥接网络配置的 Ubuntu 16.04 虚拟机,虚拟机的 IP 为192.168.2.8。我正在使用 docker-compose 与 docker 设置锯齿网络,按照官方说明找到 here 。这是 yaml 文件:


services:

  settings-tp:
    image: hyperledger/sawtooth-settings-tp:1.0
    container_name: sawtooth-settings-tp-default
    depends_on:
      - validator
    entrypoint: settings-tp -vv -C tcp://validator:4004

  intkey-tp-python:
    image: hyperledger/sawtooth-intkey-tp-python:1.0
    container_name: sawtooth-intkey-tp-python-default
    depends_on:
      - validator
    entrypoint: intkey-tp-python -vv -C tcp://validator:4004

  xo-tp-python:
    image: hyperledger/sawtooth-xo-tp-python:1.0
    container_name: sawtooth-xo-tp-python-default
    depends_on:
      - validator
    entrypoint: xo-tp-python -vv -C tcp://validator:4004

  validator:
    image: hyperledger/sawtooth-validator:1.0
    container_name: sawtooth-validator-default
    expose:
      - 4004
    ports:
      - "4004:4004"
    # start the validator with an empty genesis batch
    entrypoint: "bash -c \"\
        sawadm keygen && \
        sawtooth keygen my_key && \
        sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
        sawadm genesis config-genesis.batch && \
        sawtooth-validator -vv \
          --endpoint tcp://validator:8800 \
          --bind component:tcp://eth0:4004 \
          --bind network:tcp://eth0:8800 \
        \""

  rest-api:
    image: hyperledger/sawtooth-rest-api:1.0
    container_name: sawtooth-rest-api-default
    ports:
      - "8008:8008"
    depends_on:
      - validator
    entrypoint: sawtooth-rest-api -C tcp://validator:4004 --bind rest-api:8008

  shell:
    image: hyperledger/sawtooth-all:1.0
    container_name: sawtooth-shell-default
    depends_on:
      - rest-api
    entrypoint: "bash -c \"\
        sawtooth keygen && \
        tail -f /dev/null \
        \""

我的主机运行的是 Windows 10 Pro,IP 为 192.168.2.6 我手机上的IP是192.168.2.5 我的容器具有以下 IP:172.18.0.1。我知道如果我想让它们进行通信,它们需要位于同一网络中,并且我尝试更改容器 IP,但我没有运气。对于如何解决这个问题有什么建议吗?谢谢。

最佳答案

使用您的配置中的这段代码

  rest-api:
    ...
    ports:
      - "8008:8008"

Docker 将主机的 8008 端口映射到容器的 8008。这意味着容器正在监听主机的 8008。所以你只需要连接到 192.168.2.8:8008,不需要搞乱路由或其他任何事情。

关于android - java.net.SocketTimeoutException : failed to connect to/172. 18.0.1(端口8008)来自/192.168.2.5(端口46198)10000ms后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63781337/

相关文章:

docker - 如何知道docker容器为何重启

java - 在 Android 垃圾邮件上旋转屏幕保存的实例状态和 ActivityResultRegistry

android - FragmentDialog 与 TimePicker 的错误行为

python - 在部署时动态更改 dockerrun.aws.json 图像标签

docker - 在Raspberry pi/dev/spi *上的Dockerfile中执行chmod

php - Composer (PHP) 如何融入 Docker 工作流程?

java - Android ReSTLet 包裹崩溃

android.renderscript.RSRuntimeException fatal error 4097

linux - Azure VM/Docker – 如何在 Azure VM 上将网站部署为 Docker 容器 (Debian)

curl - Docker自定义DNS在容器之间解析