最近一段时间忙于工作,就没来得及发表博客,但一直没有停止对区块链的研究。周末抽时间分享一下近期比较重大的收获之一——使用docker来搭建和使用以太坊的节点。本人已经顺利搭建出,开发环境,测试环境,Full node环境。后续会逐个以博客的形式分析出来,希望大家多多关注,共同探讨进步。

环境

第一次尝试是在云服务器的centos 6.5上面安装。由于docker要求centos必须6以上,而且kernel 版本必须2.6.32-431或更高。尝试将centos内核进行升级,但中间遇到一些问题,没有顺利解决,索性就将云服务器升级到centos 7.2版本。

如果有朋友基于centos6.5且暂时无法直接升级系统,可参考以下文章进行升级操作。

http://blog.csdn.net/taiyang1987912/article/details/42744019

安装docker

以下环境基于centos7.2 其他环境应该差距不大,大家可自行尝试。

安装

如果依赖核心版本支持,直接执行一下命令,即可下载安装docker。

yum install docker 

执行以下命令,如果现实出具体版本,则安装成功。

docker version 

启动

service docker start

查看镜像

使用以下命令,可查看本地已经安装的镜像。

docker images

以上简单介绍了docker的安装,不同版本可能会遇到不同的问题,大家自行搜索解决。下面将主要介绍一下docker下ethereum的安装使用。

ethereum docker环境安装

首选,以太坊客户端是推荐使用docker来启动服务的。

pull镜像

安装以太坊客户端镜像,只需执行简单的命令即可:

docker pull ethereum/client-go

安装完成之后,执行一下命令验证是否安装成功,如果能看到列表中有ethereum/client-go则表示安装成功:

docker images

启动节点

启动一个节点

docker run -it -p 30303:30303 ethereum/client-go

这样,一个节点就成功启动了。在这个环节遇到可能会遇到一个问题。docker是不负责管理网络防火墙策略配置的,我这边为了外网能访问到,进行了具体的防火墙策略配置。

以下是本人在防火墙策略中针对docker的配置,仅供参考。对应策略下面添加了不同的配置项。

*nat

:PREROUTING ACCEPT [27:11935]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [598:57368]
:POSTROUTING ACCEPT [591:57092]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 192.168.0.0/16 ! -o docker0 -j MASQUERADE

COMMIT
*filter
:INPUT ACCEPT [139291:461018923]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [127386:5251162]
:DOCKER - [0:0]
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
COMMIT 

上面已经正常启动了一个节点,此节点是一个连接真实网络的全节点。如果想通过rpc接口调用对应的api,还需要在启动参数中添加对应的配置参数:

docker run -it -p 8545:8545 -p 30303:30303 ethereum/client-go --rpc --rpcaddr "0.0.0.0"

“0.0.0.0”参数会在8545接口上接收所有主机发送的请求,公共网络慎用!

如果想使用javascript控制台进行交互操作,可使用以下命令启动节点:

docker run -it -p 30303:30303 ethereum/client-go console

指定区块链数据存储位置

我们都知道,以太坊的区块链数据已经达到几十个G,如果磁盘不够docker安装的磁盘空间不够,那不就麻烦了。本人在使用时就是重新挂载了一个磁盘来专门存储区块数据。通过一下命令,可在启动的时候指定区块数据存储位置。

docker run -it -p 30303:30303 -v /path/on/host:/root/.ethereum ethereum/client-go

其中,-v参数是用来指定存储路径的。这条命令的基本作用就是将/root/.ethereum挂载到本地路径/path/on/host下面。这样,当容器启动时,文件的实际存储的就在/path/on/host目录下了。

以太坊go-ethereum客户端docker安装(一)的更多相关文章

  1. [中文] 以太坊(Ethereum )白皮书

    以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年 ...

  2. 从零构建以太坊(Ethereum)智能合约到项目实战——第20章 搭建自己的私有链网络

    P75 .1-以太坊私网建立 .合约编译.部署完全教程(1) 使用此博文进行安装配置:https://blog.csdn.net/w88193363/article/details/79402074 ...

  3. 以太坊(Ethereum)智能合约NodeJS/Web3 使用

    一.概述 运行环境:Node.js.npm.Truffle.Solidity等 root@keke:~/go-ethereum# node -v v8.9.4 root@keke:~/go-ether ...

  4. 以太坊(ethereum)开发DApp应用的入门区块链技术教程

    概述 对初学者,首先要了解以太坊开发相关的基本概念.   学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...

  5. 从零构建以太坊(Ethereum)智能合约到项目实战——第22章 玩转truffle framework 、Web3.js 框架

    P84 .1-玩转truffle framework.Web3.js 框架 内容介绍 truffle官方网站:https://truffleframework.com/ P85 .2-truffle ...

  6. 以太坊go-ethereum客户端docker安装(二)开发(dev)环境搭建

    在上一篇博客中,讲述了基于docker怎么搭建一个go-ethereum节点.作为开发人员,如果只是单纯的拥有一个Full node,还无法满足正常的开发.比如说,进行转账交易,你要考虑是否拥有一定的 ...

  7. 从零构建以太坊(Ethereum)智能合约到项目实战——第23章 从零构建和部署去中心化投票App,decentralization Voting Dapp

    P90 .1-从零构建和部署去中心化投票App-01 P91 .2-从零构建和部署去中心化投票App-02 P92 .3-从零构建和部署去中心化投票App-03 参考博文:http://liyuech ...

  8. 从零构建以太坊(Ethereum)智能合约到项目实战——第24章 IPFS + 区块链

    P93 .1-IPFS环境配置P94 .2-IPFS+P .IPNS+P .个人博客搭建 - 如何在IPFS新增一个文件P95 .3-IPFS+P .IPNS+P .个人博客搭建 - 通过ipfs创建 ...

  9. 从零构建以太坊(Ethereum)智能合约到项目实战——第21章 搭建联盟链

    P78 .1-内容介绍 什么情况下建立自己测试用的PoA chain? 公司内网或无对外网络,无法同步区块 降低测试时等待区块的时间 不想碰到testrpc各种雷 PoA chain特点有 有别于Po ...

随机推荐

  1. NOIP2017 考前汇总

    时隔一年,相比去年一无所知的自己,学到了不少东西,虽然还是很弱,但也颇有收获[学会了打板QAQ] 现在是2017.11.9   21:10,NOIP2017的前两天晚上,明天就要出发,做最后的总结 N ...

  2. SCOI2014极水的题解- -

    话说SCOI都考了1个月了,终于拿出决心把题解补完了,但都说了是极水的题解,大家就看着玩吧- - DAY1 T1:目标是找最长不降子序列,先就有一个比较显然的结论,就是假如我们要拔高区间[L, R], ...

  3. 【learning】矩阵树定理

    问题描述 给你一个图(有向无向都ok),求这个图的生成树个数 一些概念 度数矩阵:\(a[i][i]=degree[i]\),其他等于\(0\) 入度矩阵:\(a[i][i]=in\_degree[i ...

  4. kotlin Hello World 以及关键字

    hello world:(支持函数式编程,不需要放到 class 中) fun main(args: Array<String>) { println("Hello World& ...

  5. mac pro电脑怎么安装rabbitmq

    第一:依次执行以下命令: 1.  /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/inst ...

  6. width: calc(100% - 20px);

    width: calc(100% - 20px); css3 的 calc()函数.这里的意思是设置宽度比100%的宽度少20px. calc()函数用于动态计算长度值. calc()函数支持 &qu ...

  7. Netty实例

    Netty是基于JDK NIO的网络框架 简化了NIO编程, 不用程序自己维护selector, 将网络通信和数据处理的部分做了分离 多用于做底层的数据通信, 心跳检测(keepalived) 1. ...

  8. 基于javaWeb阶段下的Cookie和Session总结

    1. 会话技术   就是用户在使用浏览器浏览界面的时候,去访问多个页面后一次性关闭浏览器,这个过程叫会话,学习会话技术就是在客户端与服务器进行交互的时候为了能更好的保存数据.在java中会话技术只有C ...

  9. Vue.js随笔一(Webpack + Vue.js开发准备,含VNM、NPM、Node、Webpack等相关工具)

    想入门工具是必须的,这一章将向大家带来vue.js相关的程序安装步骤. ①首先你需要有一个NVM(一个非常好用的Node版本管理器): 1.NVM下载地址:https://github.com/cor ...

  10. 2015/9/28 Python基础(19):类的定制和私有性

    用特殊方法定制类前面我们讲了方法的两个重要方面:首先,方法必须在调用前被绑定(到它们相应类的某个实例中):其次,有两个特殊方法可以分别作为构造器和解构器的功能,分别名为__init__()和__del ...