制作geth的docker镜像

docker load -i centos.tar		# 导入centos7 最小化镜像

docker images centos	# 查看镜像信息

docker run -it 73		# 开启容器,73是镜像的id前两位

# 以下操作在容器中进行
1、配置yum源
mkdir /etc/yum.repos.d/repo
mv /etc/yum.repos.d/* /etc/yum.repos.d/repo
vim /etc/yum.repos.d/local.repo
[local_yum]
name=CentOS-local yum
baseurl="ftp://192.168.31.112/centos_repo"	# 真机yum源
gpgcheck=0
enabled=1

2、安装基础软件包
yum -y install git bzip2 gcc gcc-c++ ntp epel-release
yum -y install automake autoconf libtool make	# make工具
yum -y install net-tools	# ifconfig工具
yum -y install which 		# which工具
yum install openssh-clients	# scp等工具

3、准备软件包
scp root@192.168.31.112:/srv/* /srv/
cmake-3.15.2.tar.gz       
go1.10.2.linux-amd64.tar.gz  
node-v11.0.0.tar.gz
go-ethereum-1.8.7.tar.gz

4、安装nodejs
tar -zxvf node-v11.0.0.tar.gz
cd node-v11.0.0
./configure
make
make install 
node -v # 检测是否安装成功
npm install -g cnpm --registry=https://registry.npm.taobao.org	# 配置npm仓库

5、安装cmake
tar zxvf cmake-3.15.2.tar.gz
mv cmake-3.15.2 /usr/local/
cd /usr/local/cmake-3.15.2
./bootstrap
gmake
gmake install

echo "export PATH=/usr/local/cmake-3.15.2/bin:$PATH" >> /etc/profile
source /etc/profile
cmake -version	# 检测cmake是否安装成功

6、安装go语言环境
tar -zxvf go1.10.2.linux-amd64.tar.gz
mv  go1.10.2.linux-amd64 /usr/local/

echo "export GOROOT=/usr/local/go" >> /etc/profile
echo "export PATH=/usr/local/go/bin:$PATH" >> /etc/profile
source /etc/profile
go version	# 检测go环境是否安装成功

7、安装以太坊
tar -zxvf go-ethereum-1.8.7.tar.gz
mv go-ethereum-1.8.7 /usr/local/go-ethereum
cd /usr/local/go-ethereum
make all

echo "export PATH=$PATH:/usr/local/go-ethereum/build/bin" >> /etc/profile
source /etc/profile
geth version	# 检测geth是否安装成功

8、删除软件包
rm -fr /srv/*

# 以下操作在真机上执行
9、将容器保存成镜像
docker ps -qa		# 查看容器id,319dc2655041
docker commit 319 centos7:geth	#容器保存成镜像,docker commit 容器id 容器名:标签

10、导出镜像
docker images		# 查看镜像信息,刚才保存的镜像id为 9e6749e0c33c,镜像名为centos7:geth
docker save 9e6 -o centos7-geth.tar	# 使用镜像id导出
或
docker save centos7:geth -o centos7-geth.tar	# 使用镜像名:标签导出



# 当容器关闭之后,再次启动容器的时候需要执行source /etc/profile刷新配置文件,并且需要手动打开私有链链
# 需要对容器进行再次修改,通过docker run(docker start、docker attach) 启动容器的时候自动刷新配置文件,自动启动一个测试链



11、使用dockerfile创建镜像
# 这个脚本在刚才已经安装好geth环境的docker容器中定义,镜像id:319dc2655041
vim /usr/bin/startserver.sh
#!/bin/bash
source /etc/profile	# 刷新配置文件
geth --datadir dir --dev --rpc --rpcport 8545  --rpcaddr "localhost" console 2>/srv/blocklogdata.log	# 启动测试链

chmod 777 /usr/bin/startserver.sh	# 设置成可以执行

docker rmi centos7:geth		# 删除刚才保存的镜像	(在真机上操作)
docker commit 319 centos7:geth	# 重新将容器保存成镜像	(在真机上操作)

# Dockerfile在真机中定义
vim Dockerfile
FROM centos7:geth	# 基础镜像,刚才通过容器保存的镜像
EXPOSE 8545	# 开放的端口
CMD [ "/usr/bin/startserver.sh"]	# 启动容器时候执行的脚本

docker build -t mygeth:test .	# 创建镜像,在Dockerfile目录下执行,得到的镜像id是07a48d5f4efc,镜像名mygeth:test


12、启动镜像
docker run -it -p 8545:8545 07a		# 将docker中的8545端口映射到本地8545
netstat -ntupl | grep 8545	# 查看真机上的8545端口

13、导出新的镜像
docker save 07a -o centos7-geth.tar		# 使用id导出
或者
docker save mygeth:test -o centos7-geth.tar		# 使用 名字:标签 导出

14、使用新的镜像
docker load -i centos7-geth.tar	# 导入镜像
docker run -it -p 8545:8545 mygeth:test	# 启动容器

希望大家留言指出错误。
部署合约等操作请参考上一篇博客:Centos7安装geth、搭建私有链、部署solidity合约、调用合约函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值