EOS Docker环境搭建

安装Docker

为了搭建开发环境,需要在本机上安装Docker容器。 如果您尚未安装Docker,请参考Docker文档安装: https://docs.docker.com/install/

eosio开发镜像

抓取eosio镜像

  1. docker pull eosio/eos-dev

启动 eosio Docker

  1. sudo docker run --rm --name eosio -d -p 8888:8888 -p 9876:9876 -v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev /bin/bash -c "nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console"

以上命令中通过nodeos在容器中启动了eosio链,并包括了多个plugin插件,同时将eosio主端口设为8888:

  1. nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console

检查 eosio 是否启动

  1. sudo docker logs --tail 10 eosio

正常的话,应该看到以下内容,说明已经开始出块:

  1. 1929001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366974ce4e2a... #13929 @ 2018-05-23T16:32:09.000 signed by eosio [trxs: 0, lib: 13928, confirmed: 0]
  2. 1929502ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366aea085023... #13930 @ 2018-05-23T16:32:09.500 signed by eosio [trxs: 0, lib: 13929, confirmed: 0]
  3. 1930002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366b7f074fdd... #13931 @ 2018-05-23T16:32:10.000 signed by eosio [trxs: 0, lib: 13930, confirmed: 0]
  4. 1930501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366cd8222adb... #13932 @ 2018-05-23T16:32:10.500 signed by eosio [trxs: 0, lib: 13931, confirmed: 0]
  5. 1931002ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366d5c1ec38d... #13933 @ 2018-05-23T16:32:11.000 signed by eosio [trxs: 0, lib: 13932, confirmed: 0]
  6. 1931501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366e45c1f235... #13934 @ 2018-05-23T16:32:11.500 signed by eosio [trxs: 0, lib: 13933, confirmed: 0]
  7. 1932001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000366f98adb324... #13935 @ 2018-05-23T16:32:12.000 signed by eosio [trxs: 0, lib: 13934, confirmed: 0]
  8. 1932501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003670a0f01daa... #13936 @ 2018-05-23T16:32:12.500 signed by eosio [trxs: 0, lib: 13935, confirmed: 0]
  9. 1933001ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 00003671e8b36e1e... #13937 @ 2018-05-23T16:32:13.000 signed by eosio [trxs: 0, lib: 13936, confirmed: 0]
  10. 1933501ms thread-0 producer_plugin.cpp:585 block_production_loo ] Produced block 0000367257fe1623... #13938 @ 2018-05-23T16:32:13.500 signed by eosio [trxs: 0, lib: 13937, confirmed: 0]

可以在浏览其中,输入以下地址,获取当前区块链状态: http://localhost:8888/v1/chain/get_info 可以看到如下链和当前块的信息

  1. {
  2. "server_version": "0961a560",
  3. "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",
  4. "head_block_num": 13780,
  5. "last_irreversible_block_num": 13779,
  6. "last_irreversible_block_id": "000035d36e1ca29ba378081c574ab3b5ab4214ba29754dd42b512690a9f03e80",
  7. "head_block_id": "000035d4165c9225d7a04822d142fbcb15f997a6f2571dc7bae8437dea782205",
  8. "head_block_time": "2018-05-23T16:30:54",
  9. "head_block_producer": "eosio",
  10. "virtual_block_cpu_limit": 100000000,
  11. "virtual_block_net_limit": 1048576000,
  12. "block_cpu_limit": 99900,
  13. "block_net_limit": 1048576
  14. }

Cleos 钱包管理工具

方便起见,可以输入如下命令,将一段很长的Docker命令设为一个别名

  1. alias cleos='docker exec eosio /opt/eosio/bin/cleos --wallet-url http://localhost:8888'

以后,只需要启动该别名即可启动cleos,如下:

  1. docker stop eosio

尝试输入命令cleos --help,正常的话,应该可以看到如下帮助信息。

  1. Command Line Interface to EOSIO Client
  2. Usage: /opt/eosio/bin/cleos [OPTIONS] SUBCOMMAND
  3. Options:
  4. -h,--help Print this help message and exit
  5. -u,--url TEXT=http://localhost:8888/
  6. the http/https URL where nodeos is running
  7. --wallet-url TEXT=http://localhost:8900/
  8. the http/https URL where keosd is running
  9. -r,--header pass specific HTTP header; repeat this option to pass multiple headers
  10. -n,--no-verify don't verify peer certificate when using HTTPS
  11. -v,--verbose output verbose actions on error
  12. Subcommands:
  13. version Retrieve version information
  14. create Create various items, on and off the blockchain
  15. get Retrieve various items and information from the blockchain
  16. set Set or update blockchain state
  17. transfer Transfer EOS from account to account
  18. net Interact with local p2p network connections
  19. wallet Interact with local wallet
  20. sign Sign a transaction
  21. push Push arbitrary transactions to the blockchain
  22. multisig Multisig contract commands
  23. system Send eosio.system contract action to the blockchain.