如何使 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 对话的主要内容,如果未能解决你的问题,请参考以下文章

在本地主机上运行 docker 容器不起作用

容器在 Windows Docker 工具箱中的本地主机上不可用

如何将容器中的 symfony 5 DATABASE_URL(在 .env 中)连接到本地主机上的 wamp

在本地主机上使用具有多个项目的相同容器

如何从 docker 容器访问 localhost? [复制]

如何连接本地机器和 Docker 容器?