以太坊(https://ethereum.org)是一个开放的开源区块链软件,可以实现无中心体系架构下的应用开发。
下面我们介绍在Docker中部署以太坊(https://ethereum.org/)的方法(参见以太坊安装方法),然后使用Jupyter Notebook进行基于浏览器的访问。一旦环境设置完毕,就可以在很多环境下部署Docker容器,使用非常方便。Jupyter Notebook是基于浏览器的编程“笔记本”,非常适合进行数据探索类的研究。
1.安装支持环境
1.1.安装Docker容器支持环境
我用的Mac OS X,现在的Docker已经原生支持了,不用像以前要安装VirtualBox,再使用Vagrant了。
到这里http://www.docker.io下载相应的版本,然后运行安装程序,就可以了。
如果使用Ubuntu,建议使用 http://get.docker.io下载的脚本进行安装,官方的安装方法貌似与Ubuntu内置的lxd有冲突,经常出问题。方法如下:
wget http://get.docker.io -O docker-setup.sh
sudo chmod +x docker-setup.sh
./docker-setup.sh
如果Docker下载太慢,尝试加入这个镜像库:https://pee6w651.mirror.aliyuncs.com
1.2.安装Jupyter Notebook容器
采用Jupyter的官方Docker技术栈(https://github.com/jupyter/docker-stacks)。
docker run -it --name GISpark
-p 9000:8888
--user root -e GRANT_SUDO=yes
-v /本地目录/GISpark:/home/jovyan/work/GISpark
jupyter/all-spark-notebook
1.3.安装和更新容器内软件
打开浏览器,输入:http://localhost:9000。
在里面打开一个终端窗口,运行升级程序,安装需要的软件:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-dev
2.安装以太坊软件
然后,就可以打开终端窗口,在Ubuntu上直接安装以太坊软件,参见:http://www.linuxdiyf.com/linux/25582.html。
3.安装问题解决
由于这个镜像的基础环境是基于Ubuntu 14.04的,因此Nodejs和go的版本比较老,无法安装Ethereum。下面我们手工安装这两个软件的新版本,就可以了。
3.1.安装新版go语言运行时
下载并展开到目录。
wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
tar -vxf go1.6.linux-amd64.tar.gz
然后,修改/etc/profile文件,把这个文件拷贝过来到本地目录,以便于修改:
cp /etc/profile .
修改文件,加入下面几行,设置go语言的环境变量:
export GOROOT=/home/jovyan/work/go
export GOBIN=/home/jovyan/work/go/bin
export PATH=$PATH:$GOBIN
然后把profile文件拷贝回去,运行source使其生效。
cp profile /etc
source profile
然后:
go
go env
go version
如果显示正常的信息,go运行时就设置成功了。
3.2.安装nodejs新版本
sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common
#如果按照一些攻略误安装了chris-lea-node_js,一定要删掉,方法如下:
#sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list
#获取新的源,可选版本,目前实验可以用:
#curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get update
sudo apt-get install nodejs
3.3.编译go-ethereum客户端
按照正常的PPA安装,会出现找不到安装源的错误(没有提供Ubuntu14.04-jessie的编译好的源)。 那就自力更生,自己编译。首先获取源代码:
sudo apt-get install -y build-essential libgmp3-dev golang
git clone https://github.com/ethereum/go-ethereum
cd go-ethereum
make geth
然后,按照提示,运行:/build/bin/geth。正常情况下,可以看到运行的结果。
3.4.优化
按照上面的安装,Ethereum的区块链数据会放到Docker容器的内部存储中。我们可以设置将其放到Docker映射的宿主机目录卷,以方便管理和共享。