[開発] Hyperledger Fabricの為の環境構築と鯨家族の扱い方

#0
2016/11/21
"
□ お題目 --------------------"
"環境構築>
はじめに"
N/A
"
□ 実施方法 --------------------"
"ここに記す環境構築は全てが必須な訳ではない。
各々の目的に応じて必要な設定を選ぶこと。"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#1
2016/11/11
"
□ お題目 --------------------"
環境構築
既存環境の更新
"
□ 実施方法 --------------------"
sudo apt-get update
"
□ 確認方法/実行結果 ---------------"
"$ apt-get -v
--------------------
apt 1.2.12 (amd64)"
"
□ 備考/参考 --------------------"

"
========================="
#2
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
"Gitのインストール
※ Azure Ubuntuには不要"
"
□ 実施方法 --------------------"
"sudo apt-get install git

"
"
□ 確認方法/実行結果 ---------------"
"$ git --version
--------------------
git version 2.7.4"
"
□ 備考/参考 --------------------"

"
========================="
#3
2016/11/18
"
□ お題目 --------------------"
"環境構築
Fabric StarterKit"
"必要最小限物資の導入
(フルセット)"
"
□ 実施方法 --------------------"
"sudo apt-get update
sudo apt-get install wget
wget -qO- https://get.docker.com/ | sh
sudo usermod -aG docker user1
sudo su
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
(re-login to terminal)
mkdir handson
curl -o docker-compose.yml https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml
docker-compose up -d
docker-compose down

Go言語のインストール、GOPATHの設定、fabric資材の取得はいずれも不要。
※ docker-compose up -d で (もし無ければ) docker imageの取得、dockerコンテナの生成、コンテナの起動をする。
※ docker-compose down で コンテナを停止し、削除する。(docker imageはそのまま残る。)"
"
□ 確認方法/実行結果 ---------------"
"以下のコマンドで実行前後の違いが確認できる。
@HOSTVM
$ docker images
$ docker ps

"
"
□ 備考/参考 --------------------"
"StarterKitをHOSTから動かすには以下が必須条件となる。
Docker がインストールされている
Docker Compose がインストールされている
StarterKit用のymlが取得できている
以上を満たせば、後は「蛸 up」で起動するのみ。"
"
========================="
#4
2016/11/17
"
□ お題目 --------------------"
"環境構築>
フルセット"
fabric>インストール for Ubuntu
"
□ 実施方法 --------------------"
"ShellでのVagrant担当分の環境構築の実施 ― 鯨, Go, 環境変数, RocksDB, PIP, behave, 蛸
※ Rootユーザでの実施が無難。
※ 単体テストの実施も推奨されているが1hr以上かかる。適宜割愛するのが良い。実行するtargetはMakefile参照
sudo su
# install Go
sudo apt install golang-go
Do you want to continue? [Y/n] y
sudo su
export GOPATH=$HOME/gows
export PATH=$PATH:$GOPATH/bin
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
git clone http://gerrit.hyperledger.org/r/fabric
./fabric/devenv/setupUbuntuOnPPC64le.sh
# (need about 30min to finish the shell. be patient!)
# add login-user into the Docker group
sudo usermod -aG docker root
exit x2
re-login
sudo su
export GOPATH=$HOME/gows
export PATH=$PATH:$GOPATH/bin
cd $GOPATH/src/github.com/hyperledger/fabric
make dist-clean all
export PATH=$PATH:/root/gows/src/github.com/hyperledger/fabric/build/bin"
"
□ 確認方法/実行結果 ---------------"
"インストールした端末でfabricコマンド(peer network等)が実行できるようになる。
実行結果>Makefile Resultシート参照
単体テストの後の最後のtargetであるbehaveで硬直したので強制終了。ログを見るにpython辺りの処理で躓いた模様。
TBC: behave (according to Makefile, it's 'runs the behave test')"
"
□ 備考/参考 --------------------"
"Building on Power Platform
https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/build.md#building-on-power-platform
Shell
https://github.com/hyperledger/fabric/blob/master/devenv/setupUbuntuOnPPC64le.sh
Makefile (前提条件: Go, docker, git, curlがインストールされていること)
https://github.com/hyperledger/fabric/blob/master/Makefile"
"
========================="
#5
2016/11/11
"
□ お題目 --------------------"
"環境構築>
フルセット"
fabric>インストール for RedHat
"
□ 実施方法 --------------------"
"ShellでのVagrant担当分の環境構築の実施 ― 鯨, Go, 環境変数, RocksDB, PIP, behave, 蛸
$ sudo su
$ sudo apt install yum
$ yum install git
$ mkdir -p $HOME/git/src/github.com/hyperledger
$ git clone http://gerrit.hyperledger.org/r/fabric
$ source fabric/devenv/setupRHELonZ.sh
"
"
□ 確認方法/実行結果 ---------------"
N/A
"
□ 備考/参考 --------------------"
"Building on Z
https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/build.md#building-on-z"
"
========================="
#6
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
Go>インストール
"
□ 実施方法 --------------------"
"either one:
$ sudo apt install golang-go
Do you want to continue? [Y/n] y
…………………………
$ sudo su
# apt-get update && apt-get install golang
Do you want to continue? [Y/n] y
"
"
□ 確認方法/実行結果 ---------------"
"$ go version
--------------------
go version go1.6.2 linux/amd64"
"
□ 備考/参考 --------------------"

"
========================="
#7
2016/11/11
"
□ お題目 --------------------"
"環境構築>
Setting"
環境変数の設定
"
□ 実施方法 --------------------"
"mkdir $HOME/gows
--------------------
export GOPATH=$HOME/gows
export PATH=$PATH:$GOPATH/bin
"
"
□ 確認方法/実行結果 ---------------"
"printenv
--------------------
XDG_SESSION_ID=104
TERM=xterm
SHELL=/bin/bash
以下割愛"
"
□ 備考/参考 --------------------"

"
========================="
#8
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
wget>インストール
"
□ 実施方法 --------------------"
sudo apt-get install wget
"
□ 確認方法/実行結果 ---------------"
"$ wget -V
--------------------
GNU Wget 1.17.1 built on linux-gnu.
"
"
□ 備考/参考 --------------------"

"
========================="
#9
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
クジラ>インストール
"
□ 実施方法 --------------------"
"$ wget -qO- https://get.docker.com/ | sh
$ sudo usermod -aG docker user1
* replace user1 with your own user
then, re-login after logout.
"
"
□ 確認方法/実行結果 ---------------"
"$ docker -v
--------------------
Docker version 1.12.1, build 23cf638"
"
□ 備考/参考 --------------------"

"
========================="
#10
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
タコ>インストール
"
□ 実施方法 --------------------"
"更新が頻繁。公式サイトも参照のこと。
$ sudo su
# curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# exit
"
"
□ 確認方法/実行結果 ---------------"
"$ docker-compose version
$ docker-compose -v
--------------------
docker-compose version 1.9.0, build 2585387

"
"
□ 備考/参考 --------------------"
https://github.com/docker/compose/releases
"
========================="
#11
2016/11/11
"
□ お題目 --------------------"
環境設定
fabric資材の取得
"
□ 実施方法 --------------------"
"$ mkdir -p $HOME/gows/src/github.com/hyperledger
$ cd $HOME/gows/src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
※ 上記でfabricの全て(全バージョン)を取得している
"
"
□ 確認方法/実行結果 ---------------"
""
"
□ 備考/参考 --------------------"
"任意のversionにしたい場合
$ cd $HOME/gows/src/github.com/hyperledger$ git clone https://github.com/hyperledger/fabric.git
$ cd fabric
$ git checkout v0.6.1-preview
もしくは
git clone -b v0.6.1-preview https://github.com/hyperledger/fabric.git
"
"
========================="
#12
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
Rocks DB>インストール
"
□ 実施方法 --------------------"
"$ sudo apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev
$ cd /tmp
$ git clone https://github.com/facebook/rocksdb.git
$ cd rocksdb
$ git checkout v4.1
諸設定
$ PORTABLE=1 make shared_lib
30分ほど待つ。
$ sudo INSTALL_PATH=/usr/local make install-shared

11/15 以下のところは割愛した
git checkout v4.1
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"
"※fabric v0.6.xはRocksDB v4.1を想定している
※fabric v0.6.xを扱うには別途対bug処置が必要
Building the fabric, Building outside of Vagrant,
https://github.com/hyperledger/fabric/blob/master/docs/dev-setup/build.md
RocksDB > latest version
https://github.com/facebook/rocksdb/releases"
"
========================="
#13
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
Pip>インストール
"
□ 実施方法 --------------------"
"$ curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
$ sudo apt install python-pip
$ pip install --upgrade pip
$ sudo pip install behave nose docker-compose
$ sudo pip install -I flask==0.10.1 python-dateutil==2.2 pytz==2014.3 pyyaml==3.10 couchdb==1.0 flask-cors==2.0.1 requests==2.4.3
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#14
2016/11/11
"
□ お題目 --------------------"
"環境構築>
単体"
タコ>初期値設定
"
□ 実施方法 --------------------"
"$ cd /etc/default/
$ sudo chmod 777 docker
$ vi docker
以下を追記
DOCKER_OPTS=""-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock""
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#15
2016/11/16
"
□ お題目 --------------------"
"環境構築>
単体"
"gcc>インストール
(C言語のコンパイラ)"
"
□ 実施方法 --------------------"
$ sudo apt-get install gcc
"
□ 確認方法/実行結果 ---------------"
"Reading package lists... Done
Building dependency tree
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).
gcc set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 27 not upgraded.
"
"
□ 備考/参考 --------------------"
HOSTVMでmake peerする為に入れてみたが不要。
"
========================="
#16
2016/11/11
"
□ お題目 --------------------"
基本操作>蛸
タコ>定義ファイルの準備
"
□ 実施方法 --------------------"
"$ mkdir -p $HOME/mydir
$ cd $HOME/mydir
$ touch docker-compose.yml
$ vi docker-compose.yml
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"
"Writing, Building, and Running Chaincode in a Development Environment, Option 2 Docker for Mac or Windows, Running the Peer and CA,
https://github.com/hyperledger/fabric/blob/master/docs/Setup/Chaincode-setup.md"
"
========================="
#17
2016/11/11
"
□ お題目 --------------------"
基本操作>蛸
タコ>起動
"
□ 実施方法 --------------------"
"$ cd $HOME/mydir
$ docker-compose up –d
$ docker-compose up -d -f $HOME/mydir/my-docker-compose.yml
※ 独自のファイル名にしている時は「f」で指定する。
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"
"以下の操作に相当する。
Docker pull image
docker build image
docker run container"
"
========================="
#18
2016/11/11
"
□ お題目 --------------------"
基本操作>蛸
タコ>終了
"
□ 実施方法 --------------------"
"docker-compose down
docker-compose down -f $HOME/mydir/my-docker-compose.yml
※ 独自のファイル名にしている時は「f」で指定する。
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#19
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
箱の立ち上げ方>概念"
"
□ 実施方法 --------------------"
"コンテナはイメージを元に生成される。
方法① 自力で鯨絵図を捜索→箱生成
方法② 鯨の定義ファイルを用意→鯨絵図のレポジトリを定義→定義ファイルを鯨に食わせて箱生成
共通する当該コマンドは以下の2つ
$ docker create {sth}
$ docker start {sth}
上記の2コマンドを一括で処理したい場合は以下のコマンド
$ docker run {sth}
※ いずれもTag (≒image version)を指定しない場合は最新版の鯨絵図が取得される。
※ ちなみに箱を畳む時は「docker stop {sth}」で。"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"
"ref. 2016年版、Dockerのすべてが5分でわかるまとめ!(コマンド一覧付き) ★オススメ
http://paiza.hatenablog.com/entry/docker_intro"
"
========================="
#20
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
鯨絵図一覧取得"
"
□ 実施方法 --------------------"
"$ docker images
上記で取得できる情報は以下に格納されている情報。
/var/lib/docker/image/aufs/repositories.json"
"
□ 確認方法/実行結果 ---------------"
"root@VM02:/var/lib/docker/image/aufs# docker -v
Docker version 1.12.3, build 6b644ec
root@VM02:/var/lib/docker/image/aufs# date
Tue Nov 22 02:27:30 UTC 2016
root@VM02:/var/lib/docker/image/aufs# ls -l
total 16
drwx------ 4 root root 4096 Nov 18 01:14 distribution
drwx------ 4 root root 4096 Nov 18 01:09 imagedb
drwx------ 5 root root 4096 Nov 18 01:16 layerdb
-rw------- 1 root root 1079 Nov 22 01:09 repositories.json
"
"
□ 備考/参考 --------------------"

"
========================="
#21
2016/11/11
"
□ お題目 --------------------"
基本操作>鯨
"クラジ>
箱の物理ログファイル確認"
"
□ 実施方法 --------------------"
"コンテナのログファイルはHOST VMの以下ロケーションにある。
/var/lib/docker/containers//-json.log
$ sudo su
# cd /var/lib/docker/containers/"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#22
2016/11/11
"
□ お題目 --------------------"
基本操作>鯨
"クラジ>
箱のログ確認"
"
□ 実施方法 --------------------"
"docker logs
e.g. $ docker logs vp0"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#23
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
箱への出入り"
"
□ 実施方法 --------------------"
"入り:
$ docker exec -it peer /bin/bash
出:
方法① bashを終了させる
# exit
方法② bashから抜ける (dettach)
[control] + p もしくは [control] + q"
"
□ 確認方法/実行結果 ---------------"
"※ exit: これによりbashのプロセスが終了する。そのプロセスがコンテナで動作する優位のプロセスだった場合は、bashプロセスの終了でコンテナも終了する=コンテナに加えた変更が失われる。
※ dettach: これでbashプロセスを終了させずにログアウトできる。コンテナで動作していたプロセスがこのbashだけだったとしてもdettachすればコンテナは終了しない=コンテナに加えた変更も保持される。"
"
□ 備考/参考 --------------------"

"
========================="
#24
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
鯨絵図の加筆履歴"
"
□ 実施方法 --------------------"
"docker history {イメージ名 or イメージID}
e.g. $ docker history mypeer"
"
□ 確認方法/実行結果 ---------------"
"user1@VM02:~/handson$ docker history d910ed217b7d
IMAGE CREATED CREATED BY SIZE COMMENT
d910ed217b7d 25 minutes ago sh -c sleep 10; peer node start --peer-chainc 91.98 kB Overwriting Test
feabb8a54c41 47 minutes ago sh -c sleep 10; peer node start --peer-chainc 50.53 kB Saving Test
21cb00fb27f4 4 weeks ago /bin/sh -c #(nop) WORKDIR /opt/gopath/src/git 0 B
以下割愛"
"
□ 備考/参考 --------------------"

"
========================="
#25
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
資材の共有手段 (ざっくり)"
"
□ 実施方法 --------------------"
"方法① 鯨絵図で共有する
方法② 鯨箱で共有する"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#26
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
資材の共有手段 (鯨絵図>ざっくり)"
"
□ 実施方法 --------------------"
"方法① 鯨絵図を直接共有する。(限定的もしくはオフラインな環境に有用)
方法② DockerHub経由に共有する。(全世界にばら巻きたい時や更新・連携の頻度が高い時に有用)"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#27
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
鯨絵図の在り処"
"
□ 実施方法 --------------------"
"Docker のイメージはJSONファイルとして保存されている。以下のディレクトリにそのファイルを確認にできる。
$ sudo su
# cd /var/lib/docker/image/aufs/imagedb/content/sha256
root@VM02:/var/lib/docker/image/aufs/imagedb/content/sha256# ls -l
total 52
-rw------- 1 root root 9423 Nov 22 01:09 d910ed217b7d3291593801febbcde3e713cf5fb72555f0805fea2fe79e331914
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"
"ref.
Dockerのイメージはどこにある?
http://deeeet.com/writing/2013/12/16/where-are-docker-images-storede/"
"
========================="
#28
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
資材の共有方法 (鯨絵図>直接共有)"
"
□ 実施方法 --------------------"
"(憶測) docker imageの物理ファイルででも共有が可能なのでは?
鯨絵図を別端末に移植して試そうとしたが、権限制約で元ファイルをVMから落とすのに失敗。プラス、鯨絵図のpermissionを何故か変更できない。Chmodコマンド知らん、と言われる。そんなアホな。。"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#29
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
資材の共有方法 (鯨絵図>Hubで共有)"
"
□ 実施方法 --------------------"
"$ sudo docker login
Username: {urDockerHubUserName}
Password: {urDockerHubPw}
Email: {urEmail}
Login Succeeded

$ sudo docker push {repositoryName}/{imageName}
"
"
□ 確認方法/実行結果 ---------------"

"
□ 備考/参考 --------------------"

"
========================="
#30
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
資材の共有方法 (鯨箱)"
"
□ 実施方法 --------------------"
"exportコマンドでdocker のコンテナを tar ファイルに固めることができる。
その物理ファイルを共有できれば同じコンテナを複製できる。
限定的なオフラインの環境に有用かな。
方法:
[command] docker ps
イメージのコンテナIDを把握
[command] docker export 4b8e3b429b04 > ~/sample-centos6.tar
[command] cat sample-centos6.tar | docker import - sample-test:6
にてエクスポートとインポートができる
[command] docker run --privileged -d -p 8080:80 --name sample sample-test:6 /sbin/init
にて実行可能"
"
□ 確認方法/実行結果 ---------------"
TBD
"
□ 備考/参考 --------------------"
"ref. Dockerで開発環境のイメージを作る
https://www.v-force.co.jp/archives/1065"
"
========================="
#31
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
箱を新規の鯨絵図として保存"
"
□ 実施方法 --------------------"
"docker containerからdocker imageを作成する。コンテナが起動していることが条件。
step1: docker ps
→ 保存対象のコンテナIDを確認
step2: docker commit -m ""コメント"" {コンテナID} {名前:タグ}
e.g. $ docker commit -m ""Saving Test"" 52b3a07d9594 mypeer
"
"
□ 確認方法/実行結果 ---------------"
"user1@VM02:~$ docker commit -m ""Saving Test"" 52b3a07d9594 mypeer
sha256:feabb8a54c4158bd13d4a603501ee3dd62dd69da194a2155e8a477d113a71415
以下で新規イメージの有無を確認できる。
user1@VM02:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mypeer latest feabb8a54c41 23 seconds ago 1.424 GB
"
"
□ 備考/参考 --------------------"
"ref. Dockerで開発環境のイメージを作る
https://www.v-force.co.jp/archives/1065"
"
========================="
#32
2016/11/22
"
□ お題目 --------------------"
基本操作>鯨
"クジラ>
箱を既存の鯨絵図に上書保存"
"
□ 実施方法 --------------------"
"step1: docker ps
→ 保存対象のコンテナIDを確認
step2: $ docker commit -m ""コメント"" {現在稼働中のコンテナID} {既存リポジトリ名:既存タグ}
e.g. docker commit -m ""Overwriting Test"" 9959795303e0 mypeer
"
"
□ 確認方法/実行結果 ---------------"
"user1@VM02:~/handson$ docker commit -m ""Overwriting Test"" 9959795303e0 mypeer
sha256:d910ed217b7d3291593801febbcde3e713cf5fb72555f0805fea2fe79e331914
以下のCREATEDで既存イメージの更新状態が見れる
user1@VM02:~/handson$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mypeer latest d910ed217b7d 49 seconds ago 1.424 GB
"
"
□ 備考/参考 --------------------"

"
========================="

tag : Hyperledger Fabric Docker Compose yml Starter Kit Rocks DB Go

2016-11-23 01:36 : 開発 : コメント : 0 : トラックバック : 0 :
コメントの投稿
非公開コメント

« next  ホーム  prev »

search

ad



counter


tag cloud

category cloud