見出し画像

【保存版】GethをDockerの仮想環境で構築しよう!(Ethereum勉強用)

5月17日にBlockBaseブロックチェーン勉強会に参加しました。Dockerを用いてGethの仮想環境を構築することができましたので、こちらに記します。

①Gethのインストール

まずはGethのインストールはこちらから。

ちなみに、Gethの簡単な説明はこちらです。


スクリーンショット (147)

私はWindowsなので、こちらからダウンロードしました。

スクリーンショット (150)

インストールしたら、正常に出来ているかをコマンドプロンプトから確認しましょう。(コマンドプロンプトの立ち上げは検索窓から「cmd」で出てきます。)

下のように「geth」と入力してください。

最初の行に「Starting Geth on Ethereum mainnet」と出てきています。
イーサリアムのメインネットとつながっていますね。

スクリーンショット (154)


②Dockerのインストール

次はDockerをインストールします。

私はこちらからダウンロードしました。

スクリーンショット (152)

ダウンロードが終わったら、きちんと出来ているか、コマンドプロンプトで確認してみましょう。

下のように「docker --version」と打ってみましょう。バージョンが出てきたらOKです。

スクリーンショット (153)

ちなみに「docker」と入力するとこんな感じになります。

スクリーンショット (155)

入力は下の形式で行うようです。

docker [OPTIONS] COMMAND

何を知りたいかわからなくなったら、この画面に戻って調べれば良さそうですね。

③「ethereum/client-go」をDockerに入れる

次は、Dockergethの動きを見てみましょう。

Docker上で動く、Gethの仮想環境が、こちらの『ethererum/client-go』になります。

スクリーンショット (156)

ピンクの部分にも「Container」とあり、「Container」とはDBサーバーやWebサーバーが動く仮想空間となります。

この『ethereum/client-go』を使用するためのコマンドが「pull」です。

スクリーンショット (157)

Pull an image or a repository from a registry

①Image もしくは
repository(容器・保管所) ←今回はこっち
をレジストリから引っ張ってくる

という意味です。

ちなみに『レジストリ』の意味はこちらわかりやすかったです。

https://wa3.i-3-i.info/word113.html

レジストリとは『Windowsやソフトウェアの情報が保存される、Windowsパソコンの中にあるデータベースのこと』

とのことです。

実際に『pull』コマンドを使ってみましょう。

スクリーンショット (158)

成功しました!

ちなみに下のImageは『Container』を立ち上げるのに必要な設定やコマンドがひとまとめになったものです。

Image is up to date(最新になった)

ということなので、「images」コマンドで確認してみましょう。

スクリーンショット (159)

このように「images」コマンドを使うと「images」がリスト化されるようですね。コマンドを打ってみると。

スクリーンショット (160)

このように表示されました。

その他にも

①Repository ⇒ ethereum/client-go
②Image ID ⇒ 255...

などの情報が確認できます。

④コンテナでコマンドを実行する

コンテナが入ったので、実際にこの仮想環境を動かしてみようと思います。

公式のこちらが参考になります。

スクリーンショット (161)

こちらがDockerのクイックスタートになります。

「alice」と書いてある部分はご自身のパソコンの名前にしてください。(私の場合は「ytaka」)

「--name」「ethereum-node」の部分は任意の名前になります。また、注意点として、作成時にはこのコマンドは改行せずに(改行を抜いて)つなげて貼り付けてください。↓こんな感じです。

docker run -d --name ethereum-node -v /Users/ytaka/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go

ちなみに、入れてみると。。

スクリーンショット (162)

エラーになってしまいました。

Conflict. The container name "/ethereum-node" is already in use by container
⇒「ethereum-node」の名前が既に使われている。

先ほど同じ名前で作ったのを忘れていました。

気を取り直して、少し名前を変えてやってみます。

docker run -d --name new-ethereum-node -v /Users/ytaka/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go

できました!

スクリーンショット (163)

番号もできております。

こちらがContainerの中で作られる仮想環境の番号になります。

Dockerのインストールしたアプリを見てみると

スクリーンショット (164)

このように、今作ったサーバーが立ち上がっていることがわかります。

中をのぞいてみると

スクリーンショット (165)

このように「Ethereum」「mainnet」のサーバーが立ち上がっています。

では、せっかくなので、「Ethereum」のテストネットである「Rinkeby」でも立ち上げてみましょう。

docker run -d --name new-ethereum-r-node -v /Users/ytaka/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go --rinkeby

先ほどと変わったのは末尾の部分です。

スクリーンショット (166)

コマンドプロンプトもうまくいきました。

Dockerも見てみると

スクリーンショット (167)

このように「Rinkeby testnet」として立ち上がっています。

いかがでしたでしょうか。

これでGethをDockerの仮想環境で構築する方法についての説明を終了致します。

最後に、この勉強会を主催したBlockBaseにつきまして、興味のある方はぜひこちらからご確認ください。



サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊