読者です 読者をやめる 読者になる 読者になる

hyperledger/fabricの最新版でDockerバージョンがあわずChainCodeのデプロイに失敗する

Fabricの最新版で環境を作っていたらChainCodeがデプロイしても動かない。
エラーを見てみたら「 Launch -> ERRO bf9 launchAndWaitForRegister failed Error starting container: API error (400): {"message":"starting container with HostConfig was drecated since v1.10 and removed in v1.12"}」てな感じでChainCode用のDockerを起動できていない

07:40:27.360 [rest] ProcessChaincode -> INFO a9d REST successfully deploy chaincode: {"jsonrpc":"2.0","result":{"status":"OK","message":"c8a656473ab6e760a6f65c6811f3883f76a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a271c3d00070e11c856a20e"},"id":1}
07:40:28.062 [chaincode] getArgsAndEnv -> DEBU aee Executable is /opt/gopath/bin/c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff94eff501b7cb73a271c3d00070e11c856a20e
07:40:28.062 [chaincode] Deploy -> DEBU aef deploying chaincode c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a2c3d00070e11c856a20e(networkid:dev,peerid:vp0)
07:41:06.666 [chaincode] getArgsAndEnv -> DEBU beb Executable is /opt/gopath/bin/c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff94eff501b7cb73a271c3d00070e11c856a20e
07:41:06.666 [chaincode] launchAndWaitForRegister -> DEBU bec start container: c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9adff501b7cb73a271c3d00070e11c856a20e(networkid:dev,peerid:vp0)
07:41:06.764 [chaincode] Launch -> ERRO bf9 launchAndWaitForRegister failed Error starting container: API error (400): {"message":"starting container with HostConfig was drecated since v1.10 and removed in v1.12"}

みてみるとイメージは出来ているが起動できない

$ docker images
REPOSITORY                                                                                                                                 TAG                 IMAGE ID          CREATED             SIZE
dev-vp0-c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a271c3d00070e11c856a20e   latest              559dd9b2d826      42 seconds ago      1.726 GB
dev-vp2-c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a271c3d00070e11c856a20e   latest              64c3aff795ac      42 seconds ago      1.726 GB
dev-vp3-c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a271c3d00070e11c856a20e   latest              505226730e4e      42 seconds ago      1.726 GB
dev-vp1-c8a656473ab6e760a6f65c6811f3883f76e7a648adedd2c1c5e4be37210abe2c7b3a73ec15c0bd6196c3f85ff9ad4eff501b7cb73a271c3d00070e11c856a20e   latest              20c182276ea1      43 seconds ago      1.726 GB

Docker1.12の変更に対応できていないようですね。
HostConfig will be deprecated since Docker 1.12 · Issue #2044 · hyperledger/fabric · GitHub
一部対応されているようなのだけどMasterにまだはいっていないもよう

1.11.2にダウングレードを試みる。

$ sudo apt-cache showpkg docker-engine
$ sudo apt-get install docker-engine=1.11.2-0~trusty

$ docker -v
Docker version 1.11.2, build b9f10c9

ダウングレードできたので、最初から上げなおし。とおもったら
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
となったので起動しない。色々やっても起動しない。
すでに色々イメージがある状態でダウングレードするとだめみたいね。まあそりゃそうか。

なんでしょうがないので、Vagrantでイメージ作るところからやり直す。
まっさらなVMを用意して、
github.com\hyperledger\fabric\devenv\setup.sh
を書き換える。

L69 の
# Install docker
apt-get install -y linux-image-extra-$(uname -r) apparmor docker-engine
⇒
# Install docker
apt-get install -y linux-image-extra-$(uname -r) apparmor
apt-get install -y  docker-engine=1.11.2-0~trusty

と書き換えてdockerをバージョン指定でインストールさせる。

これでOK。VMから作り直しましょう。

VirtualBoxから「hyperledger」イメージを削除してきれいな体にしてから

vagrant up
vagrant up --provision

でOK.その他の手順は以下と同じ。これでDockerを1.11.2固定の環境が出来た。

garapon.hatenablog.com

やれやれ