本文由币乎(bihu.com)内容支持计划奖励
1、目的
在Windows环境下搭建EOS节点,本文使用Window7环境。
2、方法
通过在Windows安装docker,可以快速搭建EOS。
3、Windows安装docker的基本要求
(1)64为操作系统,win7或者更高
(2)支持“ Hardware Virtualization Technology”,并且,“virtualization ”可用
4、安装Docker步骤
安装Docker Tooklbox,同时还附加安装:
(1)Oracle VM VirtualBox >>> 虚拟机
(2)Kitematic (Alpha) >>> 图形化管理工具
(3)Docker Quickstart Terminal >>> 终端管理
不用担心,下载的Docker Toolbox已经完全包含了这几个软件,直接安装就可以了,
4.1、下载Docker Toolbox
进行下载网页https://get.daocloud.io/toolbox,注意需要下载17.05版本或更高版本。
4.2、安装Docker Toolbox
下载完成之后双击安装文件,一路Next,接受所有默认安装即可,最后Finish即可。
安装完成出现如下三个软件:
注意:在安装过程中,会出现几个其他的安装过程,如Oracle Corporation等系列软件,全部选择安装即可。
4.3、启动Docker
预告: 前方会有两个大“坑”,请大家注意!!!
坑1:直接点击运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,不过在启动过程中我发现程序会去目录“C:\Users\k.docker\machine\cache”下寻找boot2docker.iso镜像文件,如果不存在会自动去github上下载,这样下载的速度相当的慢。
解决办法:其实在我们的Docker的安装根目录下已经有一个 boot2docker.iso 镜像,只是不知道为什么启动程序不去这里找。 废话不多说,我们就自己手动将这个ISO文件复制到上面的目录“C:\Users\k.docker\machine\cache”下(注:以你安装过程中的实际目录位置为准。),然后关闭当前的启动界面,再次启动“Docker”。
坑2:当坑1解决完之后,再次运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,此时遇到另一个问题(如果你未遇到请略过此步):
error in driver during machine creation:This computer doesn’t have VT-X/AMD-v enabled .Enabling it in the BIOS is mandatory
意思就是说你的虚拟机没有打开,这时手动打开虚拟机会发现下面问题:
解决方法:这时当使用VirtualBox启动虚拟机时提醒“虚拟电脑控制台 - 错误”,说明你电脑虚拟化技术处于被禁用状态。
这时就要启动BIOS的虚拟化设置 | 开启CPU虚拟化支持。
重启电脑后按F2或F10进入BIOS界面(不同主板型号进入BIOS所需按键不同)。
进入BIOS界面:Configuratio > Intel Virtualization Technology > Enabled。
注:主板不一样其BISO中显示关键词也不一样的,主要是找到Virtual或Virtualization将其设置为Enabled。
解决坑2问题之后,再次直接点击运行桌面的“Docker Quickstart Terminal”快捷方式启动Docker,终于出现期待已久的大鲸鱼了:
5、搭建EOS节点
预告:前方坑太多!!!
5.1、从GIT下载&编译
git clone https://github.com/EOSIO/eos.git --recursive
cd eos/Docker
docker build . -t eosio/eos
注意:当执行 docker build . -t eosio/eos时,可能会出现以下错误:
bzip2: Data integrity error when decompressing.
Input file = (stdin), output file = (stdout)
It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.
You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files.
解决方法:重新执行docker build . -t eosio/eos,就好了(猜测下载文件不完成)。
接下来就是需要漫长的等待,晚上电脑一直开着,早上起来一看,又出现一个错误:
Step 20/27 : COPY --from=builder /opt/eos/bin /opt/eos/bin COPY failed: stat /var/lib/docker/overlay2/d66370d8a0140a0596ce407855eb13790db1a051570b4771bad485381c8853be/merged/opt/eos/bin: no such file or directory
解决方法:
找到本地目录文件“C:\Users\k\eos\Docker\Dockerfile”
打开文件Dockerfile,找到
&& cmake --build /tmp/build --target install
修改为
&& cmake --build /tmp/build --target install \
&& cd /tmp/build && cmake -DCMAKE_INSTALL_PREFIX=/opt/eos -P cmake_install.cmake
重新执行docker build . -t eosio/eos,终于编译成功:
5.2、启动
接下来就是启动啦,执行以下命令:
docker run --name eosd -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosd.sh arg1 arg2
非常不幸,没能成功,提示错误:
standard_init_linux.go:195: exec user process caused "no such file or directory"
原因:Windows环境下,因为结束换行符是 \r\n ,导致Docker镜像中的Linux Shell脚本文件无法执行。Linux/Mac的结束符是\n,所以Shell解释器会将脚本文件中的\r作为命令行的一部分来执行。这就是出现 “no such file or directory” 的原因。
解决方法:定位问题之后,修正也很简单。我的做法是利用 dos2unix.exe start_eosd.sh和dos2unix.exe eosd.sh命令将其转换成为unix格式文件,同时必须重新使用docker build . -t eosio/eos命令进行编译,编译完成之后,再次执行docker run --name eosd -p 8888:8888 -p 9876:9876 -t eosio/eos start_eosd.sh arg1 arg2,这样问题就解决了。
5.3、获取区块链信息
新打开GIT终端窗口,执行以下命令,可以获取到区块链信息:
$ curl http://192.168.99.100:8888/v1/chain/get_info
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 364 100 364 0 0 364 0 0:00:01 --:--:-- 0:00:01 355k{"server_version":"d666bfaa","head_block_num":2757,"last_irreversible_block_num":2741,"head_block_id":"00000ac55bd9729a1a119977badc7980f84c00557402d33d8437bf037d13e183","head_block_time":"2018-01-24T04:06:53","head_block_producer":"initu","recent_slots":"1111111111111111111111111111111111111111111111111111111111111111","participation_rate":"1.00000000000000000"}
遇到太多坑,最后终于搭建好了,至此整个windows 7 环境下的EOS节点搭建就OK了。