Docker ====== 我们在docker hub上托管了最新版本的快照(将来会提供发行版),你可以通过如下步骤运行: 准备工作 ----------- 运行镜像之前,你需要获取最新的版本并准备好数据目录: Before running the image, you should pull the latest version and prepare :: # 从dockerhub获取最新的版本(再次执行相当于更新) docker pull ethereum/client-cpp # 创建可挂载的数据目录,区块链/帐号数据将存放于此 mkdir -p ~/.ethereum ~/.web3 以上这些步骤只需要执行一次,如果想要更新版本,只需哟啊重新执行: ``docker pull ...`` 。 执行阶段 --------- 最简单的用法就是执行下面的命令:: docker run --rm -it \ -p 127.0.0.1:8545:8545 \ -p 0.0.0.0:30303:30303 \ -v ~/.ethereum:/.ethereum \ -v ~/.web3:/.web3 \ -e HOME=/ \ --user $(id -u):$(id -g) \ ethereum/client-cpp 这将会把数据写入 ``~/.ethereum`` 和 ``~/.web3/`` 目录,并且以当前用户的权限去执行客户端,在大多数情况下这个命令是够用的,客户端端行为就像是在本地构建的一样。 如果你想开通rpc端口以便可以从外部网络访问(不推荐,如果你的机器上有私钥或者其它任何有价值的内容,永远不要这样做),请使用 ``-p 0.0.0.0:8545:8545`` 来替代上文中的 ``-p 127.0.0.1:8545:8545`` 。 方便起见,你可以创建一个包含如下内容的文件 ``/usr/local/bin/docker-eth`` :: #!/usr/bin/env sh mkdir -p ~/.ethereum ~/.web3 if ! id -nG $(whoami)|grep -qw "docker"; then SUDO='sudo'; else SUDO=''; fi $SUDO docker run --rm -it \ -p 127.0.0.1:8545:8545 \ -p 0.0.0.0:30303:30303 \ -v ~/.ethereum:/.ethereum \ -v ~/.web3:/.web3 \ -e HOME=/ \ --user $(id -u):$(id -g) \ ethereum/client-cpp $@ 使用如下命令来给文件添加执行权限: ``chmod +x /usr/local/bin/docker-eth`` ,你可以通过如下命令直接启动客户端:: docker-eth **Note:** 命令 ``docker-eth`` 会接受和 ``eth`` 一样的参数标志。 如果想附加到节点上,你可以使用mist(它将自动检测节点)、使用geth命令 ``geth attach ipc:/$HOME/.ethereum/geth.ipc`` 、或者使用运行着的以太坊命令行。 进阶方法 --------------- 由于这个问题(https://github.com/docker/libnetwork/issues/552)组播在没有 ``--net=host`` 参数时不会进行。你可以继续在网络隔离的情况下使用客户端,或者使用 ``-p 127.0.0.1:8545:8545 -p 30303:30303 -p 30303:30303/udp`` 发布rpc、p2p和discovery端口,如果你想被外网探测到,你还需要: - 通过 ``--public-ip`` 标志添加你的公网IP地址 - 通过NAT映射你的端口 (syncing will still work without it).