java.net.SocketTimeoutException:10000毫秒后无法从/192.168.2.5(端口46198)连接到/172.18.0.1(端口8008)

时间:2020-09-07 16:37:36

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

我正在构建一个运行锯齿SDK的移动应用程序。我想向我的锯齿网络提交事务,并且出现此错误: getBookbyTitel(query) async{ return await Firestore.instance .collection("book") .where("titel", isEqualTo: query).where("author", isEqualTo: query2).where("genre", isEqualTo: query3). where("code", isEqualTo: query4).getDocuments(); }

我正在将VM与具有桥接网络配置的Ubuntu 16.04一起使用,并且该VM的IP为java.net.SocketTimeoutException: failed to connect to /172.18.0.1 (port 8008) from /192.168.2.5 (port 46198) after 10000ms。我正在按照here的官方说明使用docker-compose与docker设置锯齿网络。这是yaml文件:

192.168.2.8

我的主机正在使用IP 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,但是我没有运气。关于如何解决此问题,有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

使用您配置中的这段代码

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

Docker将主机的端口8008映射到容器的8008。这意味着容器正在侦听主机的8008。因此,您只需要连接到192.168.2.8:8008,而无需弄乱路由或其他任何事情。