search
LoginSignup
22

More than 5 years have passed since last update.

posted at

updated at

bitcoindをdockerで環境構築する

この記事では、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を叩いて確認するのが確実です。

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
What you can do with signing up
22