Go-Ethereum

如何使 Docker 容器與本地主機上的 geth.ipc 通信

  • March 6, 2022
from web3 import Web3

web3 = Web3(Web3.IPCProvider("/Ethereum/geth.ipc"))
print(f'IPC connected: {web3.isConnected()}')  # want to return True

我有上面的 Dockerized 腳本,我正在嘗試連接到geth.ipc本地主機,但我似乎無法連接到它。

這是我執行 Docker 的方式:

docker run --mount type=bind,source=$HOME/Library/Ethereum,target=/Ethereum container1

我已經驗證它geth.ipc存在於/Ethereum目錄中,但似乎無法連接到它。有沒有辦法做到這一點?

這個問題可能與有關,這是我最初的問題 https://stackoverflow.com/questions/52715141/how-to-make-a-docker-container-talk-to-geth-on-local-host

採用host.docker.internal

這適用於 Docker for Mac 和 Docker for Windows。

如果您使用的是 Linux,事情會變得更加複雜。請查看https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach

如果您掛載包含 IPC 文件的文件夾而不是直接掛載該文件,它將起作用。

引用自:https://ethereum.stackexchange.com/questions/60378