Help us understand the problem. What is going on with this article?

Docker ではじめるCPUマイニング(BitZeny編)

1. はじめに

  • 今回は、自分自身への備忘録を兼ねて、Docker(Dockerfile)を用いたCPUマイニングをはじめる方法を、お伝えしたいと思います。

参考:CC BitZenyをDockerでマイニングしてみる
参考:shamaton / docker-miner-zeny

2. この記事を読んでできること

  • Docker(Dockerfile)を用いてBitZeny(アルトコイン)をCPUマイニングできるようになる。

3. 必要なもの

  • Dockerホスト環境(この記事では Raspberry Pi3B + Ubuntu 18.04 LTS(arm64)を利用)
  • インターネット環境

4. 前提条件

  • ハードウェア:Raspberry Pi3B
  • OS:Ubuntu 18.04 LTS(arm64)
  • アーキテクチャ:arm64

5. Dockerコンテナのセットアップ

  • 以下のコマンドを順次実行し、cpuminerが実行できるDockerコンテナ環境をセットアップします。
コマンドプロンプト
// ホームディレクトリに移動
$ cd

// docker-miner-zenyを取得
$ git clone https://github.com/shamaton/docker-miner-zeny.git

// ディレクトリを移動
$ cd docker-miner-zeny

// Dockerfileとstart.shファイルの確認
$ ls
Dockerfile  README.md  start.sh

// Dockerイメージのビルド
$ docker build -t zeny:latest .

// Dockerイメージ一覧表示(IMAGE IDを確認する)
$ docker image ls

// CPUマイニングの実行(Dockerイメージからコンテナを起動)
// 環境変数POOL、WALLETの部分にご自身のプールアドレス、BitZeny受信アドレスを設定してください。
$ docker run --name mining --env POOL=stratum+tcp://zny.mofumofu.me:3331 --env WALLET=Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn.Ubuntu --env THREAD_NUM=3 zeny

// Dockerコンテナの一覧表示
$ docker container ls -a

// Dockerコンテナ単体での自動起動を有効化
$ docker update --restart=always mining

// 自動起動が有効になっているコンテナを確認
$ docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

// Dockerコンテナ単体での自動起動を無効化
$ docker update --restart=no mining

// コンテナを停止
$ docker stop mining

// Dockerコンテナの削除(必要なくなったら時に実行する)
docker rm mining
  • 今回はオンラインウォレットの「BitZeny WALLET」を利用しました。
  • ウォレットをまだお持ちでない方は、「BitZeny WALLET」の「新規登録」リンクから新規登録をおこない、ウォレット内の「受信アドレス」からご自身の「BitZeny受信アドレス」をコピーしてお使いください。
  • マイニングプールについては、登録不要で使えるBitZenyのマイニングプール(NOMP:Node Open Mining Portal)である「mofumofu.me」を利用しています。

6. CPUマイニング実行コマンドの例

  • 以下のコマンドを実行し、CPUマイニングを実行します。
コマンドプロンプト
// CPUマイニング実行コマンドの例
// use case 1
$ docker run --name {コンテナ名} --env POOL={プールアドレス} --env WALLET={ウォレットアドレス} --env THREAD_NUM={割当CPUコア数} zeny

// use case 2
$ docker run --name {コンテナ名} --env POOL={プールアドレス} --env USERPASS={ユーザー名.ワーカー名:パスワード} --env THREAD_NUM={割当CPUコア数} zeny

7. CPUマイニング成功時のログ

  • CPUマイニングに成功すると、「(yay!!!)」とログに出力されるかと思います。
  • ただし、マイニングに成功してもすぐにBitZeny受信アドレスに受け取り反映されるわけではありません。受け取り反映されるルールについては、利用するマイニングプールのルールによって異なります。CPU処理能力であれば、数時間から半日程度、気長に待ってみましょう。

8. 参考:start.sh

start.sh
#!/bin/sh

if [ -z ${POOL} ]; then
        echo "not set pool address... exit"
        exit 1
fi

if [ -n "${WALLET}" ]; then
        echo "POOL   -> $POOL"
        echo "WALLET -> $WALLET"
        echo "thread -> $THREAD_NUM"
        /root/cpuminer/minerd  -o $POOL -u $WALLET -t $THREAD_NUM
elif [ -n "${USERPASS}" ]; then
        echo "POOL     -> $POOL"
        echo "USERPASS -> $USERPASS"
        echo "thread   -> $THREAD_NUM"
        /root/cpuminer/minerd  -o $POOL -O $USERPASS -t $THREAD_NUM
fi

9. 参考:Dockerfile

Dockerfile
FROM ubuntu:xenial

MAINTAINER shamaton

WORKDIR /root

RUN apt-get update \
 && apt-get -y install \
    git \
    wget \
    libjansson-dev \
    automake \
    libtool \
    curl \
    libcurl3 \
    libcurl3-dev \
    make

WORKDIR /root
COPY start.sh /root/start.sh
RUN chmod a+x /root/start.sh

RUN git clone https://github.com/bitzeny/cpuminer \
 && cd cpuminer \
 && sh autogen.sh \
 && ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"  \
 && make

CMD ["/root/start.sh"]

10. おわりに

いかがでしたでしょうか?意外と簡単にDocker(Dockerfile)を用いたCPUマイニングを始めることができたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2020/02/24 TAKAHIRO NISHIZONO

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした