IPFS技术进展:在Docker使用IPFS
FilCloud
2020-04-07
热度6608

IPFS现在越来越广泛,本文为新的IPFS教程文:将IPFS部署在Docker!!!

使用 IPFS,您可以共享文件而无需诸如 Dropbox,Google Drive 和 Co 之类的集中式产品。这意味着您不需要帐户,没有大小或带宽限制...

它使共享文件方便且非常安全。实际上,用户无法在提交文件后修改文件。这是由于 IPFS 使用内容本身的哈希而不是 url 引用内容。本文简要介绍了什么是 IPFS,并感谢 Docker 展示了如何安装和使用它。

请记住,IPFS 不会加密任何内容。如果您在 IPFS 上共享机密,并且有人幸运地猜到数据的哈希值,那么他们将访问您的机密。但是,您可以在 IPFS 上共享您加密的内容。

IPFS 简介

IPFS 与在线文件共享解决方案

让我们以 Dropbox 为例。我可以与您共享一个内容为:

http://somedropboxlink.com/myfile.pdf 的文件。与您共享此文件后,我可以自由修改内容。该链接将保持有效,但下载文件时获得的内容将取决于下载时间。如果您考虑某种合同协议,这不是一个好选择。

使用 IPFS,情况有所不同。通过 IPFS 共享文件时,可以确保从指定链接获得的内容始终完全相同。与您共享内容后,我不能再偷偷修改内容了。

使用 IPFS 网关

您不需要安装任何内容即可查看和从 IPFS 网络检索文件。这要归功于 https://ipfs.io 上托管的 IPFS 网关。

在浏览器中打开此链接将完全显示以下内容:

Hello and Welcome to IPFS!

██╗██████╗ ███████╗███████╗
██║██╔══██╗██╔════╝██╔════╝
██║██████╔╝█████╗  ███████╗
██║██╔═══╝ ██╔══╝  ╚════██║
██║██║     ██║     ███████║
╚═╝╚═╝     ╚═╝     ╚══════╝

If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!

 -------------------------------------------------------
| Warning:                                              |
|   This is alpha software. Use at your own discretion! |
|   Much is missing or lacking polish. There are bugs.  |
|   Not yet secure. Read the security notes for more.   |
 -------------------------------------------------------

Check out some of the other files in this directory:

  ./about
  ./help
  ./quick-start     <-- usage examples
  ./readme          <-- this file
  ./security-notes

这个时候它不会当你打开 URL 依赖。从现在开始的 10 年后,打开此 IPFS 链接时,内容将不再可用,或者如果可用,则完全相同。

如果有人修改内容,即使是很小的更改(例如添加空格),它也会修改您在 URL 末尾看到的哈希。因此,原始内容在原始 URL(主要是 IPFS 哈希)上仍然可用,而新内容在 NEW URL(=新 IPFS 哈希)上可用。

资料可用性

您可能想知道为什么数据将不再可用?

IPFS 是对等网络。当您请求文档时,您的对等方(或使用上面的链接时为 IPFS 网关)正在询问对等方是否有人拥有内容。如果是,则您的同伴将获取它,将其保留一段时间,然后将其退回。如果您再次需要此内容,则您的对等方将已经拥有它(一段时间,具体取决于节点的配置)。

如果没有对等方具有与哈希匹配的内容,则不会返回任何数据。由同龄人决定什么是“有趣的内容”以及保留多长时间。

有一种方法可以告诉您的 IPFS 节点 PIN 数据。这意味着我们告诉节点某些数据很重要,并且我们希望将其永久保存,以便通过网络保持可用。

使用 IPFS

如今,有一种使用 IPFS 的非常简单的方法。您可以从下面的链接下载 IPFS 桌面:

https://github.com/ipfsshipyard/ipfsdesktop/blob/master/README.md

这将在您的计算机上安装 IPFS 节点,以及一个允许您与该节点进行交互的小实用程序。这使得使用 IPFS 非常简单。

安装此程序后,您可以通过简单的拖放操作将文件“添加到 IPFS”。该程序甚至允许您将屏幕截图自动添加到 IPFS。

但是请记住,只有您的计算机和 IPFS 节点可用时,您共享的任何文件才可用。如果关闭计算机电源,并且没有其他对等方拥有您的数据,则在您的节点重新联机之前,人们将不再能够访问您的内容。

因此,在运行 24/7 的服务器上运行 IPFS 可能很有趣。

运行IPFS节点24/7


在 24/7 可用的服务器上运行IPFS非常有价值。首先,您要提供的所有内容将始终可用。但是,您还可以通过提供一些受欢迎的内容来为网络做出贡献和帮助。

使用 Docker 的 IPFS

如您在此处看到的,在新服务器上安装 IPFS 确实需要几个步骤:

https : //http://ipfs.io/ipfs/QmR7tiySn6vFHcEjBeZNtYGAFh735PJHfEMdVEycj9jAPy/docs/install/

注意:IPFS 文档已经很好地存储在 IPFS 上了!

简而言之,您将需要安装一些 GOLANG 东西,对系统进行一些调整,告诉 IPFS 守护程序作为服务启动,注意访问权限等....我不确定您的身份,但是我很少有时间或时间。耐心地处理所有这些...

在服务器上安装 Docker 也需要几个步骤,但是一旦完成,Docker 确实使其变得更加简单。

这是在服务器上运行 IPFS 节点并访问在 ipfsDocker 容器内运行的命令的方法。

使用 Docker 安装 IPFS

首先,您需要使用来连接到服务器 ssh。

现在,我们将创建 2 个文件夹。我知道您讨厌复制/粘贴,因此在这里仅一行:

mkdir -p $HOME/ipfs/staging; mkdir -p $HOME/ipfs/data

如果您tree的系统上有该命令,它将显示:

  $ tree -d -L 1 $HOME/ipfs
  /home/will/ipfs
  ├── data
  └── staging

  2 directories

现在我们准备好使用 docker 部分。尽管这一行更长了一点,但它也相当简单,只要正确安装了 Docker,您就应该有问题:

docker run -d --name ipfs -v $HOME/ipfs/staging:/export -v $HOME/ipfs/data:/data/ipfs -p 4001:4001 -p 127.0.0.1:8080:8080 -p 127.0.0.1:5001:5001 ipfs/go-ipfs:latest

IPFS 现在正在运行。

但是我们如何使用它呢?我可以给你一些 Docker 命令来执行此操作,但这会比较长且乏味。让我们做一个别名,使事情变得容易得多。我正在为我的别名命名dipfs(对于 docker-ipfs ),因为ipfs我的系统上有一个旧命令。如果不这样做,则可以在以下命令中替换dipfsipfs

alias dipfs='docker exec ipfs ipfs'

为了使该别名持续存在,您需要将其添加到中.bashrc。这是另一种形式:

echo "alias dipfs='docker exec ipfs ipfs'" >> ~/.bashrc; source ~/.bashrc

现在,我们可以使用新命令了。让我们help首先检查命令:

$ dipfs --help
USAGE
  ipfs  - Global p2p merkle-dag filesystem.

SYNOPSIS
  ipfs [--config=<config> | -c] [--debug | -D] [--help] [-h] [--api=<api>] [--offline] [--cid-base=<base>] [--upgrade-cidv0-in-output] [--encoding=<encoding> | --enc] [--timeout=<timeout>] <command> ...

OPTIONS

  -c, --config               string - Path to the configuration file to use.
  -D, --debug                bool   - Operate in debug mode.
  --help                     bool   - Show the full command help text.
  -h                         bool   - Show a short version of the command help
                                      text.
 <... truncated ...>

  EXIT STATUS

  The CLI will exit with one of the following values:

  0     Successful execution.
  1     Failed executions.

  For more information about each command, use:
  'ipfs <subcmd> --help'

注意:文档中提到ipfs。就我而言,是dipfs

现在让我们获取一些内容:

$ dipfs cat QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
  Hello and Welcome to IPFS!

  ██╗██████╗ ███████╗███████╗
  ██║██╔══██╗██╔════╝██╔════╝
  ██║██████╔╝█████╗  ███████╗
  ██║██╔═══╝ ██╔══╝  ╚════██║
  ██║██║     ██║     ███████║
  ╚═╝╚═╝     ╚═╝     ╚══════╝

  If you're seeing this, you have successfully installed
  IPFS and are now interfacing with the ipfs merkledag!

  -------------------------------------------------------
  | Warning:                                              |
  |   This is alpha software. Use at your own discretion! |
  |   Much is missing or lacking polish. There are bugs.  |
  |   Not yet secure. Read the security notes for more.   |
  -------------------------------------------------------

  Check out some of the other files in this directory:

    ./about
    ./help
    ./quick-start     <-- usage examples
    ./readme          <-- this file
    ./security-notes

现在,让我们将其中一个文件添加到 IPFS。对于示例,我们将生成一个文件。由于 IPFS 有效地重复数据删除,因此添加“ Hellow World”将毫无用处,因为有人可能已经这样做了。因此,您不会在 IPFS 中添加新内容。相反,我们将使用当前日期作为内容,这应该足够公平:

  $ echo `date` > ipfs/staging/myfile.txt
  $ dipfs add /export/myfile.txt; rm ipfs/staging/myfile.txt
  added QmYbdWGwaGjDMzSHDQygAXZsQA559cqesUz19DKgwSfwkt myfile.txt
  29 B / 29 B  100.00%

注意:在此示例中,我们正在添加一个文本文件,但是您可以添加 PDF,整个视频,...任何内容...

注意:请注意,我们还有一些额外的工作将文件放置在特定的位置(容器即容器)

您可能会使用我们在本文开头看到的 IPFS 桌面程序添加文件和内容。现在,让我们看看如何固定添加到新服务器中的内容,使其继续提供这些文件。

让我们以 IPFS 哈希:

QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG为例。

它可能是来自朋友或同事的数据,您想帮助使这些内容可用。

您可以使用 IPFS 桌面程序查看内容:

图1:浏览给定IPFS哈希的内容

检查帮助

$ dipfs pin --help
USAGE
  ipfs pin - Pin (and unpin) objects to local storage.

SYNOPSIS
  ipfs pin

SUBCOMMANDS
  ipfs pin add <ipfs-path>...           - Pin objects to local storage.
  ipfs pin ls [<ipfs-path>]...          - List objects pinned to local storage.
  ipfs pin rm <ipfs-path>...            - Remove pinned objects from local
                                          storage.
  ipfs pin update <from-path> <to-path> - Update a recursive pin
  ipfs pin verify                       - Verify that recursive pins are
                                          complete.

  For more information about each command, use:
  'ipfs pin <subcmd> --help'

将某些内容固定在您的节点上

$ dipfs pin add QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
pinned QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG recursively

结论

我们已经看到了如何使用 IPFS 桌面程序,这使使用 IPFS 变得轻而易举。我们还看到了如何使用 Docker 在将运行 24/7 的服务器上安装 IPFS 节点。

我们终于了解了如何将内容固定在服务器上,以便即使台式机或笔记本电脑脱机,我们的内容仍然可用。

End

非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。

FilCloud 帮你迅速了解 IPFS 领域的热点技术和应用

公众号:filcloud

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96