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

最短2文でLibraのテストネットを立ち上げるDockerイメージ作りました

6月28日、29日に開催されたG20でも議論されたと言われる話題のLibra、登場早々さまざまな方面に影響を与えています。そんなLibraを手軽に体感できるように、最短で2文で実行できるDockerイメージを作ったので紹介します!

前提知識と下準備

前提としてお使いのPCにDockerがインストールされている必要があります。Dockerはコンテナ技術を使った仮想環境を構築でき、スクラップ&ビルドがしやすいため、今回のような実験的なプログラムを動かしやすいメリットがあります。また、Dockerイメージと呼ばれるファイルシステムを利用することで同じ環境を構築することができるため配布がしやすいという長所もあります。

DockerイメージはDockerfileと呼ばれるファイルによって定義されます。

Dockerイメージの紹介

今回作成したDockerイメージは以下のようなDockerfileで定義されています。こちらのファイルはGitHubでも確認できるようにしています。
https://github.com/Naokiakazawa/libratest-docker

Dockerfile
FROM ubuntu:19.04
SHELL ["/bin/bash", "-c"]
RUN apt-get update \
    && apt-get -y upgrade \
    && apt-get -y install \
        cmake \
        curl \
        git \
        golang \
        libssl-dev \
        protobuf-compiler \
        sudo \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && git clone https://github.com/libra/libra.git
WORKDIR /libra
RUN yes | ./scripts/dev_setup.sh \
    && source /root/.cargo/env \
    && cargo build
CMD [ "./scripts/cli/start_cli_testnet.sh" ]

使い方

今回作成したDockerイメージは、DockerHub上で公開しています。
https://hub.docker.com/r/naokiakazawa/libra-test

DockerHubはさまざまなDockerイメージが公開されているプラットフォームで、ログインすれば便利なイメージを利用することができます。Dockerのインストールやログインなどが問題なければ、この節にある2つのコマンドでテストネットを立ち上げることができます。

まず、DockerHubのDockerイメージをローカル環境にプルしましょう。まず1つ目のコマンドはdocker pullを使って以下のようになります。

コマンド1つ目
docker pull naokiakazawa/libra-test 

プルできたら次にdocker runを使って、以下のコマンドでイメージからコンテナを立ち上げます。これが2つ目のコマンドになります。

コマンド2つ目
docker run --name libratestnet -it naokiakazawa/libra-test 

なお、--name libratestnetでは立ち上げるコンテナの名前をlibratestnetとすることを定義しています。また、この時、docker runの末尾に/bin/bashなどのようなコマンドをつけないようにしてください。Dockerfileの最後にあるCMD命令の内容が上書きされるため、正しく動作しません。

うまく起動すればLibraコマンドが実行できるようになります。libra#というプロンプトが出れば問題ありません。

ただし、2点注意があります

  • Dockerイメージのデータサイズが約15GBほどあります。テストネットの環境を丸ごとコンテナの中に展開しているのでデータが少々大きくなります。
  • データサイズが大きいため、イメージをプルする時間が少しかかります。

まとめ

この度は、PCのローカル環境を汚すことなく、手軽に試せるようにするためDockerイメージを作ってDockerHubで公開しました。

ただ少しデータサイズが大きくなってしまうため、今後小さくしてみたいと思います。(たぶんベースイメージを小さいものにしたり、マルチステージビルドをしてみたりするとうまくいくはず…)

Akazawa_Naoki
ソフトウェアエンジニア/経営学・組織論を研究中(博士課程)/FLOCで講師。よりダイナミックで適応力の高い、”Organic”な仕組みの可能性に賭けています。→ Learnability、Learning Experience(学習体験)、Token Engineering、Web3.0、シンギュラリティにおける組織論
https://note.com/naoki_akazawa
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