如何在 docker 容器外訪問 ethereum/client-go shell
我剛剛開始學習區塊鏈並遵循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 控制台。可能還有其他方法可以完成相同的事情。
- 查找執行 Geth 的容器的名稱
以下命令將列出所有正在執行的 Docker 容器:
docker ps
記下姓名和/或身份證
- 連接到容器
docker exec -it <NAME OR ID> bash
這應該將終端“放入”Docker 容器中。
(注意:如果此命令
no such file or directory: unknown.
出錯,請嘗試用bash
、sh
或zsh
替換ash
。這取決於容器中預設安裝的外殼。(來源)
- 創建一個帳戶
您對
personal.newAccount()
的引用似乎是對 Geth 控制台的引用。您需要找到.ipc
Geth 在執行時創建的文件並連接到它。您可能已經知道它在哪裡。如果你不這樣做,你應該能夠使用:find / -name "geth.ipc"
記下路徑
- 打開 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 日,至少應該使用新圖像