Edited at

bitcoindをdockerで環境構築する

More than 1 year has passed since last update.

この記事では、Mac OS Sierra 10.12.4を使っています。

ビットコインのclient/APIであるbitcoindをdockerで環境構築した時の情報をまとめました。


1.docker hubからbitcoindのdockerfileを取得

今回はbitcoindで検索して最もpullの多い、kylemanna/bitcoindを使わせてもらいました。

https://hub.docker.com/r/kylemanna/bitcoind/

設定ファイルを変えたかったため、docker pullはせずにgithubのリポジトリからgit cloneしました。

git clone https://github.com/kylemanna/docker-bitcoind


2.bitcoindの実行オプション修正(任意)

cloneが完了したら、binフォルダにあるbtc_initを修正して、txindex=1を書き込みます。

txindexはダウンロードするbitcoinにインデックスを振るかどうかのオプションです。

インデックスがなければ、transactionの取得が使えませんので、設定しておきます。

※ダウンロード後にreindexでインデックスを振ることもできます


btc_init

cat <<EOF > $HOME/.bitcoin/bitcoin.conf

disablewallet=
${DISABLEWALLET:-1}
printtoconsole=
${PRINTTOCONSOLE:-1}
rpcuser=
${RPCUSER:-bitcoinrpc}
rpcpassword=
${RPCPASSWORD:-```dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64```}
txindex=1

bitcoin.confの作成をしているところにtxindex=1を追加します。

bitcoindはbitcoin.confの設定を見て動きます。


3.dockerのイメージをビルド

dockerfileのある場所で、imageをビルド。

docker build -t bitcoin .


4.ビルドしたイメージのコンテナを作成

bitcoindは全ブロックデータをダウンロードしようとします。

2017/6/6現在、約470000ブロックが存在しており、全てダウンロードすると40GB以上は容量を食ってしまいます。


そのため、-vオプションで、ホスト上のどこかにボリュームをマウントしておくことをお勧めします。私は、bitcoin-dataというフォルダを$HOME配下に作り実行しました。

docker run -v $HOME/bitcoin-data:/bitcoin --name=bitcoind-node -d \

-p 8333:8333 \
-p 127.0.0.1:8332:8332 \
bitcoin

docker psでコンテナができていることを確認します。

docker ps 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f57b8b4ea28 bitcoin "docker-entrypoint..." 27 minutes ago Up 27 minutes 127.0.0.1:8332->8332/tcp, 0.0.0.0:8333->8333/tcp, 18332-18333/tcp bitcoind-node

docker logsでビットコインのダウンロードも進んでいることを確認します。

docker logs --tail 100 bitcoind-node

2017-06-06 14:58:31 UpdateTip: new best=00000000003c40a610d51694b09cad43067fd097ac31d856a2e1b3920f4eaf6d height=76981 version=0x00000001 log2_work=53.6344 tx=108889 date='2010-08-29 02:57:51' progress=0.000480 cache=18.6MiB(86410tx)
2017-06-06 14:58:31 UpdateTip: new best=0000000000633aea8e81a332774908abcf638051b6fabaa9836c09351458b507 height=76982 version=0x00000001 log2_work=53.634676 tx=108890 date='2010-08-29 03:00:54' progress=0.000480 cache=18.6MiB(86411tx)


5.bitcoin-cliの動作確認

bashでコンテナの中に入って、bitcoin-cliのコマンドを叩いて返ってきたらOK!

あとはダウンロード完了を待ちます。(途中でダウンロードをやめたい場合は、bitcoin-cli setnetworkactive falseで中止できます。

bashでコンテナに入る

docker exec -i -t bitcoind-node bash

bitcoin-cliのコマンドを叩いて動作確認

bitcoin-cli getbestblockhash

000000000000021f8cc6b31d78e4ecc462c10925f15ea7e2b8fa16e8132d9712

bitcoin-cliのコマンド一覧wiki

※コマンドはよく更新されるのでhelpを叩いて確認するのが確実です。