文档章节

基于Docker在Ubuntu+Jupyter上运行“以太坊”

openthings
 openthings
发布于 2016/10/08 15:29
字数 898
阅读 189
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

以太坊(https://ethereum.org)是一个开放的开源区块链(技术原理与发展趋势区块链相关术语)软件,可以实现无中心体系架构下的应用开发。

下面我们介绍在Docker中部署以太坊的方法(参见以太坊安装方法),然后使用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

1.2 安装Jupyter Notebook容器

采用Jupyter的官方Docker技术栈

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上直接安装以太坊软件,参见:https://my.oschina.net/u/2306127/blog/750162

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映射的宿主机目录卷,以方便管理和共享。

© 著作权归作者所有

openthings

openthings

粉丝 349
博文 1228
码字总数 906641
作品 1
东城
架构师
私信 提问
加载中

评论(2)

openthings
openthings 博主
手动安装Nodejs和go语言,然后自己编译go-ethereum,出来的版本是可以用的。参考上面的方法。
openthings
openthings 博主
jupyter/all-spark-notebook用的Ubuntu14.04,很不幸,Nodejs太老,golang太老,找不到这个版本的安装源了。
基于docker的以太坊集群的私有链开发环境

转载博文:https://www.jianshu.com/p/8af386ec5f9e https://www.jianshu.com/p/7994db7a2b89?from=singlemessage https://blog.csdn.net/hqzxsc2006/article/details/79526911 阅读完本文,......

osc_n2j4ak5s
2019/02/18
2
0
用Docker构建⼀个区块链工作和开发环境(下)

上一篇奠定了基础的知识点以后,我们开始区块链之旅了! 我们要做的第一件事是将“geth”节点连接到以太坊生产网络,从而保证我们的本地区块链同步,并为其他工具打开服务端口 - 当然也是在容...

wise2c
2016/12/21
152
0
用Docker构建⼀个区块链工作和开发环境(上)

预读先知 区块链(Blockchain)是一种安全的在线交易方式。区块链是一种分布式数字账目,在全球数以千计的计算机上记录交易,使得注册的交易不能被追溯改变。他们通过集体自利的大规模协作进...

wise2c
2016/12/20
79
0
002 Ubuntu16.04上基于docker搭建以太坊go-ethereum客户端

一、运行环境 Ubuntu16.04、go1.9.2、docker17.12.0-ce 二、安装go 最新的docker17.12.0-ce 需要go1.9.2支持,参考之前文章进行安装地址: http://blog.csdn.net/zxs9999/article/details/7...

<script>alert
2018/01/01
0
0
java使用web3j和spring boot开发以太坊区块链应用

区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结...

编程狂魔
2018/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微服务项目搭建,到底要不要聚合工程?

这是一个入门问题,做微服务项目,首先就是要搭建 Project,代码采用什么样的形式来组织,这是我们面临的第一个问题。 要扯清楚这个问题,首先对 Maven 的使用不能含糊,小伙伴们可以在公众号...

osc_y12wmf09
7分钟前
5
0
C语言探索之旅 | 第一部分第六课:变量的世界(三),显示变量内容

作者 谢恩铭,慕课网精英讲师 Oscar老师。 转载请注明出处。 内容简介 用 printf 显示变量内容 用 scanf 提取程序中的输入 总结 第一部分第七课预告 1. 用 printf 显示变量内容 变量相关的内...

osc_zjs1puzi
8分钟前
9
0
php 操作RabbitMQ

基本流程图 如果exchange 没有绑定queue,则消息将会被丢弃 如果创建exchange,queue,并且已经绑定了,则可以直接使用 为了防止脚本出问题 可以配合supervisor 安装 从网站 https://packag...

php开源社区
10分钟前
10
0
Kotlin Coroutines Flow 系列(五) 其他的操作符

八. Flow 其他的操作符 8.1 Transform operators transform 在使用 transform 操作符时,可以任意多次调用 emit ,这是 transform 跟 map 最大的区别: fun main() = runBlocking { (1...

osc_0l1onu3j
10分钟前
9
0
挽救数据库性能的30条黄金法则

原文: 挽救数据库性能的30条黄金法则 1. 优化查询,应尽量避免全表扫描,应该在用于检索数据和排序数据的字段上建立索引,如where子句用于搜索,order by子句用于排序,所以在这两个子句涉及...

osc_gxvh47u5
11分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部