我再次问这个问题,尽管有一个类似的问题被问到这里。我用我所读到的东西来回答这个问题,认为这是正确的方法,但它对我也不起作用。
基本上,我在docker容器中运行geth实例,并试图从我的主机连接geth控制台。
The docker command is as follows:
if [ $# -eq 0 ]
then
echo "No arguments supplied"
else
docker container run --network etherdev_net --rm --name etherdev_$1 -p 8545:8545 -v $gethdir/$1:/root/.ethereum -v $gethdir/$1/.ethash:/root/.ethash -v $bootnodedir:/root/bootnode etherdev
fi码头容器入口点基本上调用一个shell脚本。
geth --networkid 5493 --bootnodes "$(echo -n 'enode://'; bootnode --writeaddress -nodekey /root/bootnode/nodekeyfile | tr -d '\n'; echo '@192.168.2.2:30301')" --mine --rpc --rpcport "8545" --port "30303" --rpccorsdomain "*" --nat "any" --rpcapi eth,web3,personal,net --etherbase 0 --unlock "$(cat /root/.ethereum/geth/security/coinbase)" --password /root/.ethereum/geth/security/password.sec然后,我在我的主机上运行这个命令来附加一个geth控制台,但是它返回一个错误消息“致命:未能启动JavaScript控制台: api模块: Post http://localhost:8545:EOF”。
geth attach http://localhost:8545我已经验证了,如果我执行了"docker容器exec -it . /bin/sh“,我就可以使用相同的命令"geth”连接到geth。
这里怎么了?8545端口发布错误吗?
发布于 2018-03-10 04:24:21
发布于 2020-02-03 20:33:39
这是因为您在尝试连接时使用回送接口。只需尝试使用:
docker run --rm -it ethereum/client-go \
attach http://$(ip route \
|grep "default via" \
|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' \
|grep -m2 "" \
|tail -1):8545https://ethereum.stackexchange.com/questions/42283
复制相似问题