403 禁止来自 bitcoind -server 运行 docker

403 Forbidden from bitcoind -server run on docker

我正在使用新的 Docker-for-Mac 到 运行 守护程序,如下所示:

$docker run -d --name bitcoind -e BITCOIN_DATA=/data \
    -v ${PWD}/bitcoind:/data -p 8332:8332 seegno/bitcoind:latest \
    -server -rpcuser=test -rpcpassword=nopass -rpcallowip=192.168.1.67 \
    -printtoconsole -debug=rpc

我允许的 IP 地址是我的默认地址:

$ ifconfig |grep inet |grep -v inet6
    inet 127.0.0.1 nitmask 0xff000000 
    inet 192.168.1.67 netmask 0xffffff00 broadcast 192.168.1.255

然后我 运行 我的应用程序:

var BTC = require('bitcoin-core');
var opts = { 
    host: 'localhost',
    port: 8332,
    username: 'test',
    password: 'nopass'
};
btc = new BTC(opts);
btc.getNewAddress().then(function(s) {
    console.log(s);
});

并得到:

Unhandled rejection RpcError: 403 Forbidden at get (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:34:11) at Client.rpc (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/parser.js:81:14) at Request.self.callback (/Users/ekkis/Development/Test/www/node_modules/request/request.js:200:22) at emitTwo (events.js:87:13) at Request.emit (events.js:172:7) at Request. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:1067:10) at emitOne (events.js:82:20) at Request.emit (events.js:169:7) at IncomingMessage. (/Users/ekkis/Development/Test/www/node_modules/request/request.js:988:12) From previous event: at /Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:163:21 From previous event: at Client.command (/Users/ekkis/Development/Test/www/node_modules/bitcoin-core/dist/src/index.js:152:34) at apply (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:409:27) at Client.wrapper [as getNewAddress] (/Users/ekkis/Development/Test/www/node_modules/lodash/lodash.js:4837:16) at Object. (/Users/ekkis/Development/Test/www/t:12:5) at Module._compile (module.js:425:26) at Object.Module._extensions..js (module.js:432:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Function.Module.runMain (module.js:457:10) at startup (node.js:136:18) at node.js:972:3

虽然我似乎可以连接到服务器:

$ telnet localhost 8332
Trying ::1...
Connected to localhost.
Escape character is '^]'.

它不会因连接错误挂断我...我错过了什么?

* 编辑我 *

好吧...如果我 运行 使用 -logips 的守护程序并进行尝试,我会看到:

2016-07-09 18:32:26 Received a POST request for / from 172.17.0.1:50262

而不是我期望的 IP 地址。我收集到它是 Docker 运行s 的 VM 的 IP 地址,它以某种方式被路由到容器。所以现在的问题是:如何从我的节点应用程序中发现该 IP 地址,以便将其列入白名单?

和...(鼓声)答案似乎是我可以从 docker inspect NetworkSettings.Gateway 键中拾取它。但是...事实上,我可以将它烘焙到 CLI 中,因为对于此图像,网关始终相同