如何使 Docker 容器与本地主机上的 geth 对话
Posted
技术标签:
【中文标题】如何使 Docker 容器与本地主机上的 geth 对话【英文标题】:How to make a Docker container talk to geth on local host 【发布时间】:2019-03-13 21:13:47 【问题描述】:我有一个使用 web3 Dockerized 的简单 python 脚本,我正在尝试连接到本地主机上的 geth.ipc,但我似乎无法连接到它。有办法吗?
Python:
from web3 import Web3
web3 = Web3(Web3.IPCProvider("/Ethereum/geth.ipc"))
print(f'IPC connected: web3.isConnected()') # want to return True
我正在安装我的$HOME/Library/Ethereum/geth.ipc
-> /Ethereum/geth.ipc
【问题讨论】:
显示你的安装方式 你是如何运行 docker 实例的?文档建议您需要类似--ipc=host
docs.docker.com/engine/reference/run/#ipc-settings---ipc
docker run --mount type=bind,source=$HOME/Library/Ethereum,target=/Ethereum container1
我验证geth.ipc
文件已安装到容器,但似乎无法连接到它
添加--ipc=host
似乎并不能解决问题。
如果有人感兴趣,我在 geth repo 提交了一个问题:github.com/ethereum/go-ethereum/issues/17907
【参考方案1】:
如果您挂载包含 IPC 文件的文件夹而不是直接挂载该文件,它将起作用。
【讨论】:
以上是关于如何使 Docker 容器与本地主机上的 geth 对话的主要内容,如果未能解决你的问题,请参考以下文章
容器在 Windows Docker 工具箱中的本地主机上不可用
如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp