Docker 容器中的 IPFS public 节点?

IPFS public node in a Docker container?

我正在尝试设置一个我想起床的 IPFS server on my home network. I have a CoreOS 框并 运行 它。由于 CoreOS 专注于 Docker 容器,这就是我的设置。

我已经让它工作了,所以我可以启动一个 Docker 容器 运行 守护进程:

docker run --name ipfs.service \
  -p 8080:8080 -p 4001:4001 -p 5001:5001 \
  ipfs/go-ipfs:v0.4.14

并且我已登录 运行 容器 (docker exec -it ipfs.service sh) 并将 "Addresses.Gateway" 选项更新为“/ip4/0.0.0.0/tcp/8080".

启动时,日志确实显示:

API server listening on /ip4/0.0.0.0/tcp/5001
Gateway (readonly) server listening on /ip4/0.0.0.0/tcp/8080
Daemon is ready

现在,我希望能够从我家庭网络上的另一个工作站浏览 IPFS 内容。但是,导航到 http://192.168.0.100:8080/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg(我的 CoreOS 的本地 IP 地址为 192.168.0.100),我在 Chrome.

中收到 "Connection Refused" 错误

使用 SSH 隧道我可以访问 IPFS 内容(将服务器 8080 端口转发到我的本地工作站),所以我知道 IPFS 服务器至少正在为外部 CoreOS 层提供服务。

但是如何让它更进一步呢?我不确定这是 CoreOS 配置错误还是 IPFS 守护程序配置错误。如何进一步排除此连接断开的位置?

可能是 docker 事情,因为在 IPFS 配置方面一切看起来都正常。

当 运行 你的 docker 容器时,尝试 运行 它与 docker run ... -p 0.0.0.0:8080:8080 而不是 -p 8080:8080。我认为 docker 默认情况下将 8080:8080 绑定到 127.0.0.1 而不是 0.0.0.0.

这个问题原来是IPFS版本的问题;更新到最新版本的 IPFS 导致问题消失。