基于Ubuntu Docker环境下进行以太坊实践

当前位置:首页 > 币圈百科 > 基于Ubuntu Docker环境下进行以太坊实践

基于Ubuntu Docker环境下进行以太坊实践

2022-12-02币圈百科274

本文是以太坊技术爱好者在Ubuntu环境下通过docker安装调试以太坊客户端的教程。

目录

1、实用环境要求

2、Ubuntu发行说明

3、Docker安装

4、以太坊安装与实践

5、ZSH小工具推荐

Engine/installation/Linux/Ubuntu Linux/

以上文章主要是指导你安装Docker管理的分发包及其安装机制。使用这些软件包来确保您获得docker的最新官方版本。如果您需要安装和使用Ubuntu管理的软件包,请查阅Ubuntu文档。

1.2 docker支持操作系统

Ubuntu Xenial 16.04【LTS】

Ubuntu Trusty 14.04【LTS】

Ubuntu Precision 12.04【LTS】

1.3前置要求【x另外,你的内核至少要3.10版本以上。最新的3.10次要版本或的最新维护版本也是可以接受的。kernel3.10版之前的系统缺少一些运行docker容器的特性。这些旧版本中的一些已知错误蓑衣网小编2022会导致数据丢失,并在特定条件下频繁出现故障。检查您当前的内核版本,打开终端,输入unamer

。注意:如果您之前已经安装了带有APT的docker,请确保为新版本的docker存储库更新APT源代码。

1.4更新apt源

Docker的APT库包含1.7.1及更高版本。通过设置APT使用docker存储库中的包。

1)要登录到机器,用户必须使用sudo或root权限。

2)打开终端

3)更新包信息,确保APT可以工作在https模式,CA证书已经安装了

123 # sudo APT-get Update # sudo APT-getinstall APT-transport-https CA-certificates

此问题可能是由于另一个程序正在运行,导致资源被锁定且不可用。资源被锁定的原因可能是上次安装或更新没有正常完成,解决方法是删除。

123 # sudo rum/var/cache/apt/archives/lock # sudo rum/var/lib/dpkg/lock

4)添加新的GPG密钥

1 # sudo apt-keyadv-key server HKP://p80 . pool . sks-key servers . net:80-recv-keys 58118 e89 F3 a 912897 c 070 adbf 76221572 c 52609d

5)找到适合您的密钥这个键决定了APT将搜索哪个包。可能的密钥有:

Ubuntu版本:Precision 12.04,Trusty 14.04,Cenial 16.04

注意:docker不提供所有架构的包,二进制工件是每夜构建的,可以从下面的链接下载。

https://master . docker project . org?在多架构系统上安装docker,并在密钥中添加一个[arch=]子句。更多详情,请参考Debian Multiarch维基百科。

6)运行以下命令,用操作系统的占位符替换键。

# echo " " | sudo tee/etc/apt/sources . list . d/docker . list

比如你在16.04中用deb替换了上面命令的

?https://apt.dockerproject.org/repoubuntu-xenial? Main执行该命令,并在该文件夹中创建一个docker.list文件。里面的内容是

deb?https://apt.dockerproject.org/repoubuntu-xenial? Main

7)更新APT包索引

1#sudo APT-get更新

8)验证APT从正确的仓库拉安装包。

当运行以下命令时,此键将返回您当前可以安装的docker版本。每个键都包含URL:https://apt.dockerproject.org/repo/.以下是捕获的输出的一部分。

1 # APT-cache策略docker-engine

现在当你运行apt-get升级时,APT会从新仓库拉安装包。

2 Ubuntu发行说明

2.1前期准备操作

Ubuntu Xenial 16.04[LTS],Ubuntu Trusty 14.04[LTS]记得安装linux-iamge-extra-*这个包可以让你使用aufs存储驱动。

# sudo apt-get安装Linux-image-extra-$(uname-r)Linux-image-extra-virtual

Ubuntu Precision 12.04[LTS]该版本需要3.13以上的内核版本,必须升级。 下表指导您需要哪些软件包:

您可以执行以下命令:

123 # sudo apt-get install Linux-image-generic-lts-trusty # sudo reboot

3 docker安装

3.1预操作使用您的帐户使用sudo完全权限

2)。运行命令APT-get install openssh-server来安装ssh,看看安装是否成功。PS-EF | grepsh

3)。更新apt包索引:sudo apt-get update

4)。安装docker: sudo apt-get安装docker-engine

5)。Open Docker后台进程:sudo服务docker start

6)。验证Docker是否安装成功:sudo docker run hello-world

该命令将下载一个测试映像并在容器中运行。当容器运行时,它将打印一些信息并退出。

3.2创建docker组

Docker守护进程是绑定Unix的套接字,而不是TCP端口。默认情况下,Unix的socket属于用户root,其他用户需要使用sudo命令。因此,docker守护进程通常以root用户身份运行。为了避免使用sudo,在使用docker命令时,创建一个名为docker的Unix组并添加用户。当docker守护进程启动时,它将为其docker组分配Unix套接字读写权限。

注意:docker组不等同于用户root。如果你想了解更多的安全影响,请查看docker守护进程攻击面。

123 # sudo groupaddocker # sudo usermod-ag docker $ user

退出并重新输入,以确保用户具有正确的权限。通过运行没有sudo的docker命令进行检查:docker运行hello-world,如果失败,将会出现以下类似的消息:无法连接到docker守护进程,' docker守护进程'是否在此主机上运行?确保没有设置DOCKER_HOST环境变量。如果有,取消。

3.3调整内存和交换区计算

当用户运行docker时,在使用镜像时可能会看到以下信息:

警告:您的内核不支持cgroup交换限制。警告:您的内核不支持交换限制功能。取消限制。

要防止出现此信息,请在您的系统中启用内存和交换区域计算。即使不使用docker,该操作也会导致内存开销和性能下降。内存开销大约是总内存的1%。性能降低10%左右。

修改/etc/default/grub文件。或者vivivim命令,设置GRUB_CMDLINE_LINUX的值如下:

GRUB _ CMDLINE _ LINUX=" cgroup _ enable=内存交换帐户=1 "。

保存文件并关闭它。

1#sudo update-grub

更新启动项并重启系统。

3.4启动UFW转发

当您在同一台主机上运行docker并使用UFW(简单防火墙)时,您需要额外的配置。Docker使用桥接来管理容器网络。默认情况下,UFW会丢弃所有转发流量。因此,可以使用docker运行时UFW,并且您必须为UFW设置适当的转发规则。

UFW的默认配置规则拒绝所有传入流量。如果您想从另一台主机访问您的容器,您需要一个允许您连接到docker的端口。如果启用了TLS,docker的默认端口是2376,如果没有启动,则是2375。会话未加密。默认情况下,docker在没有TLS启动的情况下运行。

配置UFW并允许连接的docker端口进入:检查是否安装并启用了UFW:1 # sudo ufw status打开/etc/default/ufw文件并编辑:1#sudo nano /etc/default/Uf设置default _ forward _ policy:default _ forward _ policy=" accept "保存,退出并用新设置重新启动:1 # sudou ufw reload允许所有连接到docker端口:1 # sudou ufw allow2375/TCP

3.5为docker配置DNS服务器[x网络管理器通常还会在/etc/resolv.conf中设置dnsmasq名称服务器127.0.0.1.

当在桌面计算机上运行容器并使用这些配置时,docker的用户将会看到这些警告:

警告:在resolv.conf中找到本地(127.0.0.1) DNS解析器,容器无法使用它。使用默认外部服务器:[8.8.8.88.8.4.4]

出现此警告是因为docker容器无法使用本地DNS命名服务器。此外,这个docker默认使用一个额外的名称服务器。

要避免此警告,您可以在使用docker容器时指定一个DNS服务器。或者您可以在网络管理器中禁用dnsmasq。但是,在某些网络中,禁用会降低DNS协议的速度。

以下说明描述了如何在Ubuntu14.0或更低版本中配置docker守护程序。Ubuntu15.04及以上版本使用systemd进行启动项和服务管理。使用systemd配置和控制守护进程的指南。

设置指定的DNS服务:

打开/etc/default/docker文件并编辑:sudo nano /etc/default/docker,添加配置项:docker _ opts="—DNS 8.8.8 "。8.8.8.8将被本地DNS服务取代,如192.168.1.1。您也可以配置多个DNS服务器。

用空格隔开,比如:—DNS 8.8.8.8—DNS 192.168.1.1。

警告:当您的笔记本连接到不同的网络时进行这些操作,并确保选择公共DNS服务器。保存并退出文件,重启docker守护进程:sudo service docker restart。或者另一个选择,在网络管理器中禁用dnsmasq,这样可能会降低你的网速:

打开文件/etc/network manager/network manager . conf,编辑:sudo nano/etc/network manager/network manager . conf,找到dns=dnsmasq这一行,注释掉。关闭文件,重启网管和docker.123 # sudo重启网管-manager # sudo重启docker

3.6配置docker boot startup

Ubuntu 15.04以后,使用systemd作为引导启动和服务管理,14.10及以下版本为upstart。15.04以上,需要配置docker守护进程来引导。

运行命令:1 # sudo systemctl启用Docker

14.10及以下版本。安装方法将自动配置upstart在启动时启动docke守护进程。

3.7升级和卸载docker

升级:1 # sudoapt-get升级docker-引擎卸载:1 # sudoapt-get清除docker-引擎卸载和依赖:1 # sudoapt-get自动删除-purge docker-engine上述命令不会卸载images,containers,volumes或者用户自己创建的配置文件。

你如果想删除这些东西,执行下面的命令:

1#rm -rf /var/lib/docker安装最简单的方法是:123#sudo apt-get update#sudo apt-get install

3.8 执行docker-compose安装

docker-compose 是用于定义和运行复杂docker应用的工具,以yaml定义语言在一个docker-compose.yaml文件中定义一个包括多容器的应用,用一条命令即可启动应用中包括的所有docker container,容器启动所有依赖的动作都会被工具自动完成。

123#curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose#chmod +x /usr/local/bin/docker-

4 Ethereum安装与实践

4.1 通过docker安装Ethereum

运行如下命令1#docker pull docker.io/ethereum/client-go

4.2 直接安装Ethereum

运行如下命令123#apt-get update#apt-get install software-properties-common add-apt-repository -y ppa:ethereum/ethereum安装一个稳定版本的以太坊12345#apt-get update#apt-get install ethereum#apt-get update生成引导节点ID1#bootnode --genkey=boot.key运行引导节点1#bootnode --nodekey=boot.key

4.3 新建genesis.json文件

运行以下命令1vi genesis.json输入

4.4 初始化创始区块

运行如下命令1#docker run -itd --privileged=true -v /path/docker/dev1:/root/ethdev --name gethDev1 ethereum/client-go --datadir /root/ethdev --networkid 8765639736937780 init /root/ethdev/genesis.json

4.5 创建Ethereum节点的容器

运行如下命令123#docker rm -f gethDev1#docker run -itd -m 512M --privileged=true --memory-swap -1 --net=host -p 8545:8545 -p 40303:40303 -v /path/docker/dev1:/root/ethdev --name gethDev1 ethereum/client-go --ipcdisable --port 40303 --bootnodes "enode://2039a49989e45bf119ecd21403607ea9f5888b13a6bb7a03ed81687deabb251095e4193a77eca067076f77ed40e4c6fd51539038c440337beffbbb36953d1d75@192.168.3.43:30301" --debug --nodiscover --rpcapi "db,eth,net,web3,personal,admin,miner,txpool" --datadir /root/ethdev --networkid 8765639736937780 --wsapi "db,eth,net,web3,personal,admin,miner,txpool" --ws --wsaddr "0.0.0.0" --rpc --rpcaddr "0.0.0.0" --cache=512 --verbosity 6 --mine --minerthreads=1 --etherbase=0x5f38056f45091ee992298e53681b0a60c999ff95 console

4.6 查看Ethereum节点docker日志

运行如下命令1#docker logs -f gethDev1

4.7启动Ethereum节点

运行如下命令1#docker startgethDev1

4.8 Attach Ethereum节点运行如下命令1#docker attach gethDev1

4.9 Detach Ethereum节点

先后按下键盘ctrl+p+q退出节点,注意:有先后顺序

4.10 停止Ethereum节点

运行命令如下1#docker stopgethDev14.11 Ethereum日志释疑

首先,告警提示geth抱怨没有定义etherbase,etherbase是成功挖掘区块,执行智能合约并在区块链内返回结果之后用来接收以太奖励的“默认以太坊地址”。这个帐户,在开发合同时也很方便。接下来,我们看到blockchain数据被写入/root/.ethereum/chaindata,因为我们已经从我们的主机挂载了这个目录,我们应该可以在本地磁盘上看到出现的数据:docker exec –i ethereum geth account new ls –l /opt/docker/ethereum/keystore/. docker exec ethereum apt-get install –y ntpdate docker exec ethereum ntpdate –s ntp.ubuntu.com

在当前配置中,我们有一个可以挂载到我们的容器中的以太坊数据目录。这不是因为区块链数据只能在任何情况下由一个进程访问,而是访问可由Ethereum节点用于进程间通信的IPC文件描述符。因此,我们可以在这里继续,而不需要蓑衣网小编2022 访问网络。

5 zsh小工具推荐

zsh是一款小工具,对命令补全功能非常强大,可以补齐路径,补齐命令,补齐参数等。

5.1 修改root用户SHELL

先进入root用户,命令:

1su root

查看默认SHELL命令:

1echo $SHELL

然后查看是否安装了zsh,命令:

1cat /etc/shells

默认没有安装,那么先安装zsh,命令:

1apt-get install zsh

确认zsh是否安装成功,命令:

1zsh --version

接下来替换bash为zsh,命令:

1chsh -s /bin/zsh

然后reboot重启,之后查看默认SHELL,发现修改为/bin/zsh

查看是否安装git,命令:

1git –version

如果没有安装则安装,命令:

1apt-get install git

最后下载oh-my-zsh,命令:

1sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

出现如上则安装成功,重新进入终端即可。

5.2 修改普通用户SHELL

查看默认SHELL,命令:

1echo $SHELL

如果是/bin/zsh则直接:

1sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

是/bin/bash则,切换:

1chsh -s /bin/zsh

然后用root权限reboot,然后:

1sh -c "$(curl -fsSL 蓑衣网小编2022https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"安装成功后可以(vi ~/.zshrc)来修改配置文件以改变样式(注意root和非root都要改,可以选择不一样的样式)。

root的样式配置文件在根目录root下,为隐藏文件;非root在/home/root下。

具体样式选择https://github.com/robbyrussell/oh-my-zsh/wiki/themes

基于Ubuntu Docker环境下进行以太坊实践 | 分享给朋友: