基于Docker搭建一个Go-ethereum节点(上)

2024-08-28 23:32
文章标签 go docker 搭建 节点 ethereum

本文主要是介绍基于Docker搭建一个Go-ethereum节点(上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考链接:https://github.com/ethereum/go-ethereum/wiki/Running-in-Docker

原文转载:http://dockone.io/article/1931

以太坊Go(语言)团队构建一个“geth”节点的Docker镜像作为其持续构建链的一部分。 我们可以使用这些镜像在我们的本地环境中快速运行以太坊节点。本文中我们将利用Docker构建一个以太坊工作和开发环境。

## 一个完整的以太坊节点 ##
第一个测试是下载当前Ethereum go-client(“geth”)映像,并启动连接到以太坊生产网络的客户端节点。

87b36ff.jpg

现在,我们启动一个简单的节点,如在Ethereum文档中所描述的。一旦区块同步开始,请使用CTRL + C停止节点。我们不打算使用这个容器,所以现在不需要下载整个链数据。
60a33d6.jpg

0b6e4ed.jpg

d165227.jpg

上面,我们使用RUN命令启动了Docker容器。 RUN拿一个叫做“ethereum / client-go”的镜像创建了一个新容器,并启动这个镜像定义的入口点(entry point)“/ usr / bin / geth”。

以下部分需要重点理解:
  1. RUN总是创建一个新容器。这意味着,每次通过使用RUN来启动一个容器,我们最终将产生很多无用的容器。一旦创建了容器,重新启动它的正确方法是用START命令。
  2. Docker RUN命令后的命令行参数 -it -p 30303:30303。等价于“-i -t”的“-it”代表“交互式”和“终端设备(tty)”。没有这些说明,容器将在后台运行,不会给我们的终端反馈。 “-p 30303:30303”指示Docker将端口30303从容器内部暴露给主机和其他容器,端口号为30303。容器是一个隔离的环境,并且不会隐含的暴露这个端口,以太坊客户端在容器内部将不能够接触外部世界和区块链。 30303是默认的以太坊点对点网络端口。镜像名称后面的其他参数用于镜像定义为启动时的起点的命令。本例中未设置。 3.另一个比较重要的是这个测试中存储区块链数据的地方。默认情况下,“geth”使用“$ userhome / .etherum”作为默认数据目录。容器内部运行时,如果没有指定,则为“root”:“/root/.ethereum”。然而,这个地方在其“虚拟盘”上的容器的“内部”。使数据位于容器内保持它与主机和其他容器隔离,这不一定是我们想要的。

在这个例子中,节点需要下载整个区块链数据。这需要大量的时间,带宽和存储空间,并且在各种容器和主机之间共享这些文件可能变得非常困难。
共享数据库在运行较大的应用程序时显然是一个典型的问题,Docker在这方面提供了多种选择。在以前的Docker版本中,人们经常使用所谓的“数据容器”。这些是经典和专用容器,独立于专用于存储数据的应用程序运行时实例。当前的Docker版本通过所谓的VOLUMES取代了这个想法。在本文中,我们将使用不同的解决方案:我们将区块链和帐户数据存储在主机的磁盘上,并将目录挂载到容器中。这对于以太坊有一些优势,我们将在后面介绍。

在继续之前,让我们看看我们目前在我们的安装中有什么镜像:
0db301e.jpg

接下来,让我们列出我们的容器实例是否在运行。必须通过添加“-a”命令指定活动容器:
7461917.jpg
INSPECT命令非常方便,它显示容器的整个配置和情况。
c33a7df.jpg

我们当前的容器以前是使用RUN命令创建的,现在我们将使用START命令重新启动实例:
4859026.jpg

“-i”代表将容器输出到我们的终端,“d8”表示容器ID,它也可以是镜像名称,不需要输入完整的ID,只要它是唯一的。
或者,我们可以在后台启动容器,并稍后连接终端。
4b86965.jpg
或者:
49d5dde.jpg
404268a.jpg
完成这个测试,并了解了上面介绍的基本知识。下篇我们将开始区域链之旅了!

这篇关于基于Docker搭建一个Go-ethereum节点(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116199

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而