转载文章:http://blog.csdn.net/wo541075754/article/details/53862722
环境
由于docker要求kernel 版本必须2.6.32-431或更高。尝试将centos6.5 内核进行升级,但升级失败,索性就将云服务器升级到centos 7版本。
如果有朋友基于centos6.5且暂时无法直接升级系统,可参考以下文章进行升级操作。
http://blog.csdn.net/taiyang1987912/article/details/42744019
安装docker
操作系统:centos7
安装:yum install docker
执行docker version 命令,如果现实出具体版本,则安装成功。
启动 go-ethereum:service docker start
查看镜像:docker images
ethereum docker环境安装
首选,以太坊客户端是推荐使用docker来启动服务的。
pull镜像,安装以太坊客户端镜像,只需执行简单的命令即可:
docker pull ethereum/client-go
安装完成之后,执行一下docker images命令验证是否安装成功,如果能看到列表中有ethereum/client-Go则表示安装成功:
启动一个节点:docker run -it -p 30303:30303 ethereum/client-go
如果想通过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:/blockData ethereum/client-go
其中,-v参数是用来指定存储路径的。这条命令的基本作用就是将/blockData挂载到本地路径/path/on/host下面。这样,当容器启动时,文件的实际存储的就在/path/on/host目录下了。
我这边为了外网能访问到,进行了具体的防火墙策略配置。
以下是防火墙策略中针对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