LoginSignup
13
4

More than 5 years have passed since last update.

Dockerでのethereum環境構築(geth編)

Last updated at Posted at 2018-06-29

まえがき

ethereumの開発環境をdockerで共有したい。

dockerには不慣れなのでひとまずDockerFileやDockerComposeのことは考えずに、コンテナ作成〜起動確認までをやってみる。

環境

  • macOS High Sierra 10.13.4
  • Docker for mac 18.03.1-ce-mac65

Docker for macはインストール済みとします。

イメージの取得

gethのイメージをpullします。

docker pull ethereum/client-go #tagをつけないとlatest版を取得する

コンテナの作成

取得したイメージからコンテナを作成します。

今回はethereumテストネットのropstenのノードを立てます。

docker run -d --name ethereum-ropsten-node -v $HOME/geth/ropsten:/root \
        -p 8545:8545 -p 30303:30303 \
        ethereum/client-go \
        --networkid "3" \
        --cache=1024 \
        --syncmode "fast" \ // 2018/09/25修正 --fastから左記へ変更
        --rpc \
        --rpcapi "db,eth,net,web3,personal,admin,miner" \
        --rpccorsdomain="*" \
        --rpcaddr "127.0.0.1"

コマンド説明

  • -d
    • デーモンで起動
  • --name ethereum-ropsten-node
    • コンテナ名を「ethereum-ropsten-node」とする
  • -v $HOME/geth/ropsten:/root
    • ボリュームのマウント先を指定
      • $HOME/geth/ropstenは、ホストのフォルダ
      • /rootは、コンテナ内のフォルダ
  • -p 8545:8545
    • ポートの指定
  • -p 30303:30303
    • 同じくポートの指定
  • ethereum/client-go以降は、gethの起動オプション
    • gethの起動オプションの詳細はこちら

起動確認

コンテナに入り、shを起動します。

docker exec -it ethereum-ropsten-node /bin/sh

今回はgethの起動時オプションに、rpcのオプションを付けていたのでRPC接続します。

geth attach http://127.0.0.1:8545

gethのjavascriptコンソールが立ち上がるので、ChainDataの同期を確認します。

追記: 2018/09/25

同期確認は少し時間を立ってから実行してください。(5分くらい?)

同期開始前の場合、 false と表示されます。

追記ここまで

> eth.syncing
{
  currentBlock: 17984,
  highestBlock: 5834590,
  knownStates: 35989,
  pulledStates: 33439,
  startingBlock: 0
}

無事、ChainDataの同期が始まってました。

あとがき

今回は単純にgethのノードのみを起動しましたが、機会があればdocker-compose + node + truffleとかの方法も書いてみたいと思います。

以上。

13
4
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4