我是一名学生,试图通过linux基金会的hyperledger课程学习有关区块链的知识。我正在通过docker安装锯齿框架,但遇到了一些问题。我正在尝试运行以下命令来检查从主机到Docker容器的连接:
curl http://localhost:8008/blocks
curl: (7) Failed to connect to localhost port 8008: Connection refused
有人可以帮助我打开此连接docker和主机吗?我正在使用带有ubuntu的虚拟机,在此先感谢!
这是Yaml文件:
version: "2.1"
services:
settings-tp:
image: hyperledger/sawtooth-settings-tp:1.0
container_name: sawtooth-settings-tp-default
depends_on:
- validator
entrypoint: settings-tp -vv -C tcp://validator:4004
intkey-tp-python:
image: hyperledger/sawtooth-intkey-tp-python:1.0
container_name: sawtooth-intkey-tp-python-default
depends_on:
- validator
entrypoint: intkey-tp-python -vv -C tcp://validator:4004
xo-tp-python:
image: hyperledger/sawtooth-xo-tp-python:1.0
container_name: sawtooth-xo-tp-python-default
depends_on:
- validator
entrypoint: xo-tp-python -vv -C tcp://validator:4004
validator:
image: hyperledger/sawtooth-validator:1.0
container_name: sawtooth-validator-default
expose:
- 4004
ports:
- "4004:4004"
# start the validator with an empty genesis batch
entrypoint: "bash -c \"\
sawadm keygen && \
sawtooth keygen my_key && \
sawset genesis -k /root/.sawtooth/keys/my_key.priv && \
sawadm genesis config-genesis.batch && \
sawtooth-validator -vv \
--endpoint tcp://validator:8800 \
--bind component:tcp://eth0:4004 \
--bind network:tcp://eth0:8800 \
\""
rest-api:
image: hyperledger/sawtooth-rest-api:1.0
container_name: sawtooth-rest-api-default
ports:
- "8008:8008"
depends_on:
- validator
entrypoint: sawtooth-rest-api -C tcp://validator:4004 --bind rest- api:8008
shell:
image: hyperledger/sawtooth-all:1.0
container_name: sawtooth-shell-default
depends_on:
- rest-api
entrypoint: "bash -c \"\
sawtooth keygen && \
tail -f /dev/null \
\""
答案 0 :(得分:2)
答案 1 :(得分:1)
如果使用虚拟机,则需要从虚拟机打开8008端口,以便可以从主机访问它。
,但这还取决于您生成虚拟机的网络。这是用于生成虚拟机的样本Vagrant文件,它将8008端口的虚拟机映射到您的主机。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.define "sawtoothprocessor", primary: true do |sawtoothprocessor|
sawtoothprocessor.vm.box = "ubuntu/xenial64"
sawtoothprocessor.vm.hostname ="sawtoothprocessor"
sawtoothprocessor.vm.network :public_network, ip: "192.168.1.15"
sawtoothprocessor.vm.network "forwarded_port", guest: 9001, host: 9001,
auto_correct: true
sawtoothprocessor.vm.network "forwarded_port", guest: 8000, host: 8000,
auto_correct: true
sawtoothprocessor.vm.network "forwarded_port", guest: 8008, host: 8008,
auto_correct: true
现在,如果您访问localhost:8008,它将被重定向到虚拟机8008端口,该端口又映射到docker 8008端口。 您也可以卷曲http://192.168.1.15:8008来访问锯齿齿REST API。
答案 2 :(得分:1)
我遇到了同样的问题,我可以通过连接到运行锯齿(初始终端)时生成的ip地址来解决该问题。
在第一个终端中,当您强制停止(或只是停止)锯齿时,将显示此类图像 Data regarding the connection pool
因此再次运行锯齿,并在检查主机中的连接时使用
curl http://192.168.99.100:8008/blocks
即
curl http://<your ip address>/blocks
希望这会有所帮助!