{"id":18995152,"url":"https://github.com/huarongsao/ethereum-testnet-docker","last_synced_at":"2025-04-22T12:51:45.153Z","repository":{"id":112415992,"uuid":"125729789","full_name":"HuaRongSAO/ethereum-testnet-docker","owner":"HuaRongSAO","description":"基于docker的以太坊集群的开发环境","archived":false,"fork":false,"pushed_at":"2018-04-07T03:12:15.000Z","size":24,"stargazers_count":22,"open_issues_count":3,"forks_count":16,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T15:23:05.908Z","etag":null,"topics":["docker","docker-machine","ethereum","ethereum-testnet","ethereum-testnet-docker"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HuaRongSAO.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-18T13:51:41.000Z","updated_at":"2024-10-24T07:55:56.000Z","dependencies_parsed_at":"2023-05-14T17:00:12.911Z","dependency_job_id":null,"html_url":"https://github.com/HuaRongSAO/ethereum-testnet-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HuaRongSAO%2Fethereum-testnet-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HuaRongSAO%2Fethereum-testnet-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HuaRongSAO%2Fethereum-testnet-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HuaRongSAO%2Fethereum-testnet-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HuaRongSAO","download_url":"https://codeload.github.com/HuaRongSAO/ethereum-testnet-docker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249265343,"owners_count":21240560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-machine","ethereum","ethereum-testnet","ethereum-testnet-docker"],"created_at":"2024-11-08T17:28:43.494Z","updated_at":"2025-04-22T12:51:45.146Z","avatar_url":"https://github.com/HuaRongSAO.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ethereum-testnet-docker 基于docker的以太坊集群的私有链开发环境\n\n\u003e 使用docker-machine进行对docker集群部署以太坊私有链\n\n![BUILD](https://img.shields.io/docker/build/jrottenberg/ffmpeg.svg)   \n源码: https://github.com/HuaRongSAO/ethereum-testnet-docker\n\n作者环境:\n\n- ubuntu 16.04\n\n## 目录\n\n- 使用本地搭建\n  - docker 安装\n  - docker-compose 安装\n  - 搭建eth私有链\n  - 简单测试\n- 使用docker-machine搭建集群\n  - docker 集群创建\n  - docker-machine 安装\n\n## \u003cspan id=\"docker-install\"\u003e1.docker\u003c/span\u003e\n\n安装地址: https://docs.docker.com/install/\n\n如果觉得安装步骤太麻烦,官方提供一件安装脚本:  \nLinux下可以运行:\n\n```shell\n  # 下载脚本\n  curl -fsSL get.docker.com -o get-docker.sh\n  # 运行脚本\n  sudo sh get-docker.sh\n```\n\n安装成功后:\n\n- 启动服务:\n  - ubuntu: systemctl start docker\n  - centos: service docker start\n  - window: 直接打开windowd的客户端\n\n```shell\n# 运行 docker version\n$ docker version\n\nClient:\n  Version:\t18.03.0-ce\n  API version:\t1.37\n  Go version:\tgo1.9.4\n  Git commit:\t0520e24\n  Built:\tWed Mar 21 23:10:01 2018\n  OS/Arch:\tlinux/amd64\n  Experimental:\tfalse\n  Orchestrator:\tswarm\n\nServer:\n Engine:\n    Version:\t18.03.0-ce\n    API version:\t1.37 (minimum version 1.12)\n    Go version:\tgo1.9.4\n    Git commit:\t0520e24\n    Built:\tWed Mar 21 23:08:31 2018\n    OS/Arch:\tlinux/amd64\n    Experimental:\tfalse\n\n```\n\n## 2.docker-compose\n\n\u003e Docker Compose 是 Docker 官方编排（Orchestration）项目之一，负责快速的部署分布式应用。\n\n文档: https://docs.docker.com/compose/\n\n安装: Linux系统下:\n\n```sh\n$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` \u003e /usr/local/bin/docker-compose\n$ sudo chmod +x /usr/local/bin/docker-compose\n```\n\n- python环境可以使用pip安装:\n\n```sh\nsudo pip install -U docker-compose\n```\n其他系统请看\n- (官网)[https://docs.docker.com/compose/install/]\n- (Docker — 从入门到实践)[https://yeasy.gitbooks.io/docker_practice/content/compose/install.html]\n\n运行:\n```sh\n$ docker-compose --version\ndocker-compose version 1.17.0, build ac53b73\n```\n\n## 3.搭建eth私有链\n下载仓库: https://github.com/HuaRongSAO/ethereum-testnet-docker\n\n```sh\ngit clone https://github.com/HuaRongSAO/ethereum-testnet-docker --depth 1\ncd ethereum-testnet-docker \n```\n\n文件目录结构:\n\n```sh\n.\n├── docker-compose-standalone.yml # 单独启动一个eth节点\n├── docker-compose.yml # 单独启动一个eth节点， 一个初始节点， 一个网络状态\n├── eth-netstats # 网络状态\n│   └── Dockerfile\n├── genesis # 初始化配置\n│   ├── genesis.json\n│   ├── keystore # 初始化 配置账户\n│   │   ├── UTC--2018-03-20T06-02-05.635648305Z--d6e2f555878f29ca190b8ef6bf7de334e1c47e51\n├── geth-node # 以太坊节点+api\n│   ├── app.json\n│   ├── Dockerfile\n│   └── start.sh\n├── install-compose.sh\n└── readme.md\n\n```\n\n运行:\n\n```sh\n# 进入ethereum-testnet-docker\ncd ethereum-testnet-docker\n# 在ethereum-testnet-docker目录下运行 启动以太坊\n# 第一次运行可能会加载时间相对长,以后就快了\ndocker-compose up -d\n# 查看运行状态\ndocker ps\n# 运行状态如下\nCONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                                                                             NAMES\n59380c23b730        ethereumdocker_eth         \"/root/start.sh '--d…\"   5 seconds ago       Up 3 seconds        8545-8546/tcp, 30303/tcp, 30303-30304/udp                                                         ethereumdocker_eth_1\nfbe34c9110b1        ethereumdocker_bootstrap   \"/root/start.sh '--d…\"   5 seconds ago       Up 4 seconds        0.0.0.0:8545-\u003e8545/tcp, 0.0.0.0:30303-\u003e30303/tcp, 8546/tcp, 0.0.0.0:30303-\u003e30303/udp, 30304/udp   bootstrap\n4d77ae7e987e        ethereumdocker_netstats    \"npm start\"              6 seconds ago       Up 4 seconds        0.0.0.0:3000-\u003e3000/tcp                                                                            netstats\n```\n\n折就是运行成功了,接下来你可以直接打开浏览器访问: http://127.0.0.1:3000   \n界面仓库:https://github.com/cubedro/eth-netstats  \n你就可以查看到运行状态了\n![netstats.png](https://upload-images.jianshu.io/upload_images/6167081-25a3e4587dd2e81e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n现在你就能看到两个节点:\n\n- bootstrap  # 初始化节点\n- e69fe54d216d # 新加入的节点\n\n接下来添加多个节点\n\n```sh\n# docker-compose scale 作用是启动多个eth服务\ndocker-compose scale eth=3\n```\n\n出现了三个新的node节点:\n\n- e69fe54d216d\n- 55f0f83728db\n- 1770aec8a167\n\n![netstats.png](https://upload-images.jianshu.io/upload_images/6167081-d553072ba9fdce25.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n### 使用geth\n\n使用docker exec进行与geth的交互\n\n```sh\n# 格式 docker exec -it ethereumdocker_eth_{第几个节点} geth attach ipc://root/.ethereum/devchain/geth.ipc\ndocker exec -it ethereumdocker_eth_1 geth attach ipc://root/.ethereum/devchain/geth.ipc\n```\n\n进入docker内部的geth就可以正常的使用geth的功能了.   \n阅读geth文档: \n- [geth文档](https://www.ethereum.org/cli)\n\n```sh\nWelcome to the Geth JavaScript console!\n\ninstance: Geth/v1.8.3-unstable-faed47b3/linux-amd64/go1.10\ncoinbase: 0xd6e2f555878f29ca190b8ef6bf7de334e1c47e51\nat block: 0 (Thu, 01 Jan 1970 00:00:00 UTC)\n datadir: /root/.ethereum/devchain\n modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0\n\n\u003e admin.nodeInfo.enode\n\"enode://3732c434c5330205b12ef83e31e59dd36b6d04fc8392770057a05b678483524c2c5649932bc3cc8bced54d94befbd0fda6daae988243489ce0faecfa7a5b0914@[::]:30303\"\n\u003e # geth cli\n```\n\n### 开始挖矿\n\n节点是默认不挖矿的需要手动开启挖矿:\n\n```sh\ndocker exec -it ethereumdocker_eth_1 geth attach ipc://root/.ethereum/devchain/geth.ipc\n# 开始挖矿\nminer.start()\n```\n\n等带一段时间后,就能重127.0.0.1:3000看到区块了.\n\n```sh\n# eth 查看用户\neth.accounts\n```\n\n```sh\n# stop 停止挖矿\nminer.stop()\n```\n\n到此以太坊的local本机就开发好了,但是会出现其他的问题\n\n- 以太坊钱包冲突,因为以太坊钱包的端口也是30303,8545\n\n解决方法:\n\n- 你可以修改docker-compose里的端口映射\n\n或者使用docker-machine进行docker隔离(强推)\n\n## 使用docker-machine搭建私有链集群\n\n\u003e Docker Machine 可以在多种操作系统平台上安装，包括 Linux、macOS，以及 Windows。\n\n### 1.安装docker-machine\n\n- 安装包:[docker-machine](https://github.com/docker/machine/releases)\n- 官网: https://docs.docker.com/machine/install-machine/\n\nLinux下直接:\n\n```sh\n  base=https://github.com/docker/machine/releases/download/v0.14.0 \u0026\u0026\n  curl -L $base/docker-machine-$(uname -s)-$(uname -m) \u003e/tmp/docker-machine \u0026\u0026\n  sudo install /tmp/docker-machine /usr/local/bin/docker-machine\n```\n\n看到输出就是安装成功\n\n```sh\n$ docker-machine -v\ndocker-machine version 0.13.0, build 9ba6da9\n```\n\n### 2.使用docker-machine\n\n创建一台eth的测试虚拟机:\nlinux 下:\n\n```sh\ndocker-machine create -d virtualbox --engine-opt dns=114.114.114.114 --engine-registry-mirror https://registry.docker-cn.com --virtualbox-memory 2048 --virtualbox-cpu-count 2 eth\n```\n\n参数解析:\n\n- --engine-opt dns=114.114.114.114 配置 Docker 的默认 DNS\n\n- --engine-registry-mirror https://registry.docker-cn.com 配置 Docker 的仓库镜像\n\n- --virtualbox-memory 2048 配置主机内存\n\n- --virtualbox-cpu-count 2 配置主机 CPU\n\nmac和window系统请阅读: [mac和window,其他系统](https://yeasy.gitbooks.io/docker_practice/content/machine/usage.html)\n\n查看是否创建成功:\n\n```sh\n\ndocker-machine ls\n# 输出\nNAME   ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS\neth    -        virtualbox   Running   tcp://192.168.99.100:2376           v18.03.0-ce\n```\n\n### 搭建eth服务\n\n#### 远程到你创建的虚拟机\n\n```sh\n# 远程到虚拟机\ndocker-machine ssh eth\n# 为用户设置管理员密码\nsudo passwd\n# 设置密码\nroot\nroot\n```\n\n#### 拉取项目到你的虚拟机\n\n```sh\n# 拉取本项目的代码\ngit clone https://github.com/HuaRongSAO/ethereum-testnet-docker --depth 1\n# 跳转目录\ncd ethereum-testnet-docker\n# 为脚本添加权限\nsudo chmod +x ./install-compose.sh\n# 运行脚本\n./install-compose.sh\n```\n\n这里解释一下脚本: 只是用来安装docker-compose\n\n#### 搭建私有链集群\n\n```sh\n# 跳转目录\ncd ethereum-testnet-docker\n# 启动 docker-以太坊 节点\ndocker-compose up -d\n# 添加多节点\ndocker-compose scale eth=3\n# 查看是否运行\ndocker ps\n```\n\n到这里虚拟机的私有链就安装成功了\n\n#### 访问\n\n在退出虚拟机的情况下(使用```exit```退出,)获取虚拟机的ip\n\n```sh\ndocker-machine ip eth\n# 输出ip 这就是你虚拟机的ip\n192.168.99.100\n```\n\n打开浏览器:输入192.168.99.100:3000,就能看到挖矿节点的信息\n\n#### geth交互\n\n1. 先远程登入虚拟机\n\n```sh\ndocker-machine ssh eth\n\n```\n\n2. 运行\n\n```sh\n# 格式 docker exec -it ethereumdocker_eth_{第几个节点} geth attach ipc://root/.ethereum/devchain/geth.ipc\ndocker exec -it ethereumdocker_eth_1 geth attach ipc://root/.ethereum/devchain/geth.ipc\n\n# 其他操作\n...\n\n```\n\n到这里集群就安装完毕,你的以太坊私有链的地址就不在是127.0.0.1:30303和8545就不会和本地的钱包发生冲突了,你就可以使用钱包链接到本地192.168.99.100的私有链了.\n\n文献参考:\n\n- [Docker — 从入门到实践](https://www.gitbook.com/book/yeasy/docker_practice/details)\n- [go-ethereum](https://github.com/ethereum/go-ethereum)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuarongsao%2Fethereum-testnet-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuarongsao%2Fethereum-testnet-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuarongsao%2Fethereum-testnet-docker/lists"}