參考連結:https://github.com/ethereum/go-ethereum/wiki/Running-in-Docker
原文轉載:http://dockone.io/article/1931
以太坊Go(語言)團隊構建一個“geth”節點的Docker鏡像作為其持續構建鏈的一部分。 我們可以使用這些鏡像在我們的本地環境中快速運行以太坊節點。本文中我們將利用Docker構建一個以太坊工作和開發環境。
## 一個完整的以太坊節點 ##
第一個測試是下載當前Ethereum go-client(“geth”)映像,並啟動串連到以太坊生產網路的用戶端節點。
現在,我們啟動一個簡單的節點,如在Ethereum文檔中所描述的。一旦區塊同步開始,請使用CTRL + C停止節點。我們不打算使用這個容器,所以現在不需要下載整個鏈資料。
上面,我們使用RUN命令啟動了Docker容器。 RUN拿一個叫做“ethereum / client-go”的鏡像建立了一個新容器,並啟動這個鏡像定義的進入點(entry point)“/ usr / bin / geth”。
以下部分需要重點理解:
RUN總是建立一個新容器。這意味著,每次通過使用RUN來啟動一個容器,我們最終將產生很多無用的容器。一旦建立了容器,重新啟動它的正確方法是用START命令。 Docker RUN命令後的命令列參數 -it -p 30303:30303。等價於“-i -t”的“-it”代表“互動式”和“終端裝置(tty)”。沒有這些說明,容器將在後台運行,不會給我們的終端反饋。 “-p 30303:30303”指示Docker將連接埠30303從容器內部暴露給主機和其他容器,連接埠號碼為30303。容器是一個隔離的環境,並且不會隱含的暴露這個連接埠,以太坊用戶端在容器內部將不能夠接觸外部世界和區塊鏈。 30303是預設的以太坊點對點網路連接埠。鏡像名稱後面的其他參數用於鏡像定義為啟動時的起點的命令。本例中未設定。 3.另一個比較重要的是這個測試中儲存區塊鏈資料的地方。預設情況下,“geth”使用“$ userhome / .etherum”作為預設資料目錄。容器內部運行時,如果沒有指定,則為“root”:“/root/.ethereum”。然而,這個地方在其“虛擬盤”上的容器的“內部”。使資料位元於容器內保持它與主機和其他容器隔離,這不一定是我們想要的。
在這個例子中,節點需要下載整個區塊鏈資料。這需要大量的時間,頻寬和儲存空間,並且在各種容器和主機之間共用這些檔案可能變得非常困難。
共用資料庫在運行較大的應用程式時顯然是一個典型的問題,Docker在這方面提供了多種選擇。在以前的Docker版本中,人們經常使用所謂的“資料容器”。這些是經典和專用容器,獨立於專用於儲存資料的應用程式運行時執行個體。當前的Docker版本通過所謂的VOLUMES取代了這個想法。在本文中,我們將使用不同的解決方案:我們將區塊鏈和帳戶資料存放區在主機的磁碟上,並將目錄掛載到容器中。這對於以太坊有一些優勢,我們將在後面介紹。
在繼續之前,讓我們看看我們目前在我們的安裝中有什麼鏡像:
接下來,讓我們列出我們的容器執行個體是否在運行。必須通過添加“-a”命令指定活動容器:
INSPECT命令非常方便,它顯示容器的整個配置和情況。
我們當前的容器以前是使用RUN命令建立的,現在我們將使用START命令重新啟動執行個體:
“-i”代表將容器輸出到我們的終端,“d8”表示容器ID,它也可以是鏡像名稱,不需要輸入完整的ID,只要它是唯一的。
或者,我們可以在後台啟動容器,並稍後串連終端。
或者:
完成這個測試,並瞭解了上面介紹的基本知識。下篇我們將開始地區鏈之旅了。