基于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

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总