本地環境爲 ubuntu16.04,已部署好 fabric1.4.3網絡,first-network 運行成功,現需要在服務器上部署 fabric1.4.3,考慮到網絡問題在服務器上無法拉取 fabric 所需要的 docker 鏡像,只有先將本地虛擬機上的 fabric1.4.3 的 docker 鏡像導出,再 copy 到服務器端載入,具體過程如下:
目錄
一、導出 fabric docker 鏡像
1.錯誤的導出命令
docker save <IMAGE ID> -o /Path/<REPOSITORY>.tar
此命令會導致加載後鏡像的 REPOSITORY 和 TAG 都爲<none>,解決辦法就是手動打名字和標籤:
docker tag <IMAGE ID> <REPOSITORY>:<TAG>
注意:以上命令中的 <IMAGE ID> 爲要導出鏡像的 id、 Path 爲導出鏡像存放的位置、<REPOSITORY>爲導出鏡像的名字(可自定義),<TAG> 爲標籤.
2.正確的導出命令
docker save <REPOSITORY>:<TAG> -o /Path/<REPOSITORY>.tar
例如將 hyperledge/fabric-ca 鏡像導出到 /home/jack/fabric-docker-images 路徑下,具體命令爲:
docker save hyperledger/fabric-ca:1.4.3 -o /home/jack/docker-images/fabric-ca.tar
fabric1.4.3 鏡像完整的導出命令爲:
docker save hyperledger/fabric-tools:1.4.3 -o /home/jack/docker-images/fabric-tools.tar
docker save hyperledger/fabric-ca:1.4.3 -o /home/jack/docker-images/fabric-ca.tar
docker save hyperledger/fabric-ccenv:1.4.3 -o /home/jack/docker-images/fabric-ccenv.tar
docker save hyperledger/fabric-orderer:1.4.3 -o /home/jack/docker-images/fabric-orderer.tar
docker save hyperledger/fabric-peer:1.4.3 -o /home/jack/docker-images/fabric-peer.tar
docker save hyperledger/fabric-javaenv:1.4.3 -o /home/jack/docker-images/fabric-javaenv.tar
docker save hyperledger/fabric-zookeeper:0.4.15 -o /home/jack/docker-images/fabric-zookeeper.tar
docker save hyperledger/fabric-kafka:0.4.15 -o /home/jack/docker-images/fabric-kafka.tar
docker save hyperledger/fabric-couchdb:0.4.15 -o /home/jack/docker-images/fabric-couchdb.tar
docker save hyperledger/fabric-baseos:amd64-0.4.15 -o /home/jack/docker-images/fabric-baseos-amd64.tar
二、載入 fabric docker 鏡像
可以通過U盤等移動存儲設備將已經導出的鏡像 tar 包 copy 到服務器上,存放目錄爲 /home/fabric-docker-images1.4.3,具體存放路徑視自己習慣而定.
先進入 /home/fabric-docker-images1.4.3 路徑下:
cd ./home/fabric-docker-images1.4.3
然後執行載入命令:
docker load -i fabric-tools.tar
docker load -i fabric-ca.tar
docker load -i fabric-ccenv.tar
docker load -i fabric-orderer.tar
docker load -i fabric-peer.tar
docker load -i fabric-javaenv.tar
docker load -i fabric-zookeeper.tar
docker load -i fabric-kafka.tar
docker load -i fabric-couchdb.tar
docker load -i fabric-baseos-amd64.tar
三、一些注意事項
1.新版本鏡像如何與低版本鏡像共存
可能虛擬機中存在低版本的 fabric 鏡像,而又不想刪除,可以通過將低版本的 TAG 爲 latest 的鏡像修改爲對應版本的版本號,然後刪除TAG爲 latest 的鏡像(這一步應該在 “二” 之前做,也就是在加載新版本鏡像之前做)。下面以 fabric1.1.0 版本的 peer 鏡像爲例。
修改 fabric1.1.0 版本peer鏡像的 TAG:
docker tag <IMAGE ID> hyperledger/fabric-peer:1.1.0
刪除 TAG 爲 latest 的 peer 鏡像:
docker rmi hyperledger/fabric-peer:latest
2.將源碼打包
進入到 hyperledger 目錄下:
cd ./$GOPATH/github.com/hyperledge
執行打包命令:
tar czvf fabric.tar fabric
順便附上解壓命令:
tar zxvf fabric.tar
3.通過命令行將源碼和鏡像文件 copy 到服務器中
在服務器插入U盤後,執行以下命令查看U盤設備:
./dev/sdb1
掛載U盤:
sudo fdisk -l
sudo mount /dev/sdb1 /mnt
進入U盤並創建存放fabric源碼和鏡像的文件夾:
cd /mnt
mkdir fabric_images_1.4.3
執行 copy 命令(以 peer 鏡像爲例):
cp fabric-peer.tar ./home/fabric-docker-images1.4.3
4.文件夾重命名
(存在 fabric 低版本源碼的情況下,這一步應該在解壓 fabric 源碼之前做)
cd ./$GOPATH/github.com/hyperledger/
mv fabric fabric1.1.0