Go-Ethereum

如何在 docker 容器外訪問 ethereum/client-go shell

  • February 23, 2022

我剛剛開始學習區塊鏈並遵循YouTube 教程在那個教程中,他通過複製 repo 安裝了 ethereum,但我已經按照官方文件中給出的說明使用 docker 安裝了 ethereum/go-client 。我也是 Docker 的初學者。當我使用命令執行 docker 容器時docker run -it -p 30303:30303 ethereum/client-go,我的終端看起來像這樣:- 在此處輸入圖像描述

現在我想使用personal.newAccount()命令創建一個帳戶。但是我應該在哪裡執行這個命令?Container 沒有為我提供任何可以執行此命令的 shell。

我在網際網路上搜尋了很多但沒有得到解決方案,所有這些都在展示如何僅使用 docker 安裝 geth。

請幫我 。我剛開始學習區塊鏈。

謝謝

歡迎來到乙太坊堆棧交換。

以下內容應使您能夠通過 Docker 容器連接到 Geth 控制台。可能還有其他方法可以完成相同的事情。

  1. 查找執行 Geth 的容器的名稱

以下命令將列出所有正在執行的 Docker 容器:

docker ps

記下姓名和/或身份證

  1. 連接到容器
docker exec -it <NAME OR ID> bash

這應該將終端“放入”Docker 容器中。

(注意:如果此命令no such file or directory: unknown.出錯,請嘗試用bashshzsh替換ash。這取決於容器中預設安裝的外殼。(來源

  1. 創建一個帳戶

您對personal.newAccount()的引用似乎是對 Geth 控制台的引用。您需要找到.ipcGeth 在執行時創建的文件並連接到它。您可能已經知道它在哪裡。如果你不這樣做,你應該能夠使用:

find / -name "geth.ipc"

記下路徑

  1. 打開 Geth 控制台
geth attach path/to/geth.ipc

這應該會在終端中打開 Geth JavaScript 控制台。您現在可以使用了personal.newAccount()

(請注意,此答案假定您要使用 Geth 控制台,而不是clef.)

注意:在研究這個問題的答案時,我遇到了一些可能對你有用的東西。按原樣執行這些命令不會保存會話之間的數據。這意味著如果您正在同步公共網路(測試網或主網),則每次啟動容器時都需要從頭開始重新同步。如果您想將同步數據保存到磁碟,那麼當您執行時docker run,您應該添加-v標誌以及您希望保存數據的路徑,如下所示:

docker run -it -p 30303:30303 -v /path/on/host:/root/.ethereum ethereum/client-go

/path/on/host應該保存數據的目錄在哪裡。(來源

docker exec -it /bin/sh

截至 22 年 2 月 23 日,至少應該使用新圖像

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