今天的实践完成,就可以和团队的小伙伴一同丝滑地学起我们先来回顾一下过去的文章: > 首先我们先学习了如何搭建节点: > > [1. FISCO BCOS 开发环境节点搭建全攻略](https://learnblockchain.cn/article/1935) > > 然后我们学习了控制台的安装与使用: > > [2. 控制台的安装与使用](https://learnblockchain.cn/article/1959) > > 再然后我们实现了控制台的 Web 化: > > [4. 控制台的Web化](https://learnblockchain.cn/article/2099) 但是仅仅将控制台 Web 化还是不够的,因为我们还需要进行导入导出账户、上传下载合约等多种操作。那么,我们有没有办法让用户不用登陆服务器,只在浏览器中就能实现这些操作,然后又保证用户的操作和服务器是安全隔离的呢? **我们可以通过这样的方式实现:**基于 Docker 技术在我们的服务器上搭建一个容器(Container),这个容器中是一个轻量的Ubuntu操作系统,然后这个容器挂载了控制台放置合约的 Contracts 文件夹与放置账户的 Accounts 文件夹。最后我们将我们的容器 Web 化,这样我们的
重启docker服务: 到 console 的目录下: contracts 文件夹绝对路径: accounts 文件夹绝对路径: 我们之后会通过 ssh 的方式在宿主机和容器间建立连接。 创建ssh keys: 在 创建 复制公钥到 获取 通过docker pull 命令拉取镜像: 其中,「ssh_keys 文件夹绝对路径」在 1.3 中得到,「accounts 文件夹绝对路径」与「contracts 文件夹绝对路径」在 1.2 中得到。 命令解析: 我们可以通过 执行成功后会返回容器编号: 通过ssh命令连接: 进入 contract 目录: 如果这个文件夹下的内容和console文件夹下的contracts文件夹内容一样,就说明挂载成功了。 accounts 文件夹同理。 和4. 控制台的Web化同理,只是这次我们执行的是 然后我们再按照4. 控制台的Web化中提到的方式加上鉴权即可。 部署刚才下载好的合约: 用浏览器访问 加载刚才录入的账户 用 vim 在 下载镜像: 创建容器: 查看当前运行的容器: 查看所有容器: 查看所有镜像: 删除镜像: 删除容器:sudo service docker restart
1.2 获取需要挂载到容器中的文件夹的绝对路径
$ pwd /Users/liaohua/fisco/console
[console绝对路径]/contracts
[console绝对路径]/account
1.3 创建 ssh keys 与 ssh_key 文件夹
$ ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"
~/.ssh
文件夹下会生成id_rsa.pub
文件,这个就是我们的公钥。ssh_keys
文件夹:mkdir ssh_keys
ssh_keys
文件夹:cp ~/.ssh/id_rsa.pub ~/ssh_keys/authorized_keys
ssh_keys
文件夹的绝对路径。2 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/leeduckgo/blockchain-study:2.1
3 生成容器
3.1 生成容器
docker run -d -p 26122:22 -p 8003:80 -v=[ssh_keys 文件夹绝对路径]:/root/.ssh -v=[accounts 文件夹绝对路径]:/root/study_area/accounts -v=[contracts 文件夹绝对路径]:/root/study_area/contracts --name blockchain-study registry.cn-hangzhou.aliyuncs.com/leeduckgo/blockchain-study:2.1 /usr/sbin/sshd -D
docker run --help
命令查看docker run
命令都有哪些参数。-d
:用后台的方式运行容器并打印容器id。-p
:端口映射,:
前面是宿主机的端口,后面是容器的端口,如-p 26122:22
指的是把容器的22端口(ssh端口)映射到宿主机的26122端口上。-v
:文件夹挂载,:
前面是宿主机的文件夹路径,后面是容器的文件夹路径,如-v=/home/ubuntu/ssh_key:/root/.ssh
就是把宿主机的/home/ubuntu/ssh_key
路径挂载到容器的/root/.ssh
路径下。-name
:容器名称。registry.cn-hangzhou.aliyuncs.com/leeduckgo/blockchain-study:2.1
:镜像名称。/usr/sbin/sshd -D
:启动镜像时候执行的命令,这里是开启ssh
服务。3.2 通过 ssh 连接
ssh -p 26122 root@localhost
3.3 查看文件夹是否挂载
cd ~/study_area/contracts
4 容器 Web 化
ssh
命令:ttyd -p 8081 ssh -p 26122 root@localhost -t "cd /root/study_area;bash --login"
5 与控制台配合进行
git clone https://github.com/WeLightProject/Contract-Study.git
http://ip:8080
deployByCNS contracts/solidity/Contract-Study/HelloWorld.sol HelloWorld:1.0
5.2 查看用户私钥
http://ip:8081
cd ~/study_area/accounts/ecdsa
cat 0xff1b462499a7759adeb5ff0d37b2f6815ba2d27a.pem
http://ip:8081
loadAccount account/ecdsa/0x2784d6ca6fdb8a96aa924b06978ea5af2d810240.pem
5.3 导入已知私钥与公钥的用户
ecdsa
目录下新建私钥文件:vim [地址].pem
i
命令输入:-----BEGIN PRIVATE KEY----- MEcCAQAwEAYHKoZIzj0CAQYFK4EEAAoEMDAuAgEBBCAjKpm08oDC+4UzihRd7oJ5 BNw1v3s4Po1O3ZrbDy1EDKAHBgUrgQQACg== -----END PRIVATE KEY-----
wq
保存退出。6 Docker 常用命令
docker pull [镜像名称]
docker run [镜像名称]
docker ps
docker ps -a
docker image ls
docker image rm [镜像id]
docker rm [容器id]