docker部署IPFS私有链

简介: docker部署IPFS私有链

注:此版本仅适用于ipfs/go-ipfs:v0.4.18 版本

一、安装IPFS

1.1 下载IPFS镜像

[root@localhost mnt]# docker pull ipfs/go-ipfs:v0.4.18
Using default tag: latest
latest: Pulling from ipfs/go-ipfs:v0.4.18
0de338cf4258: Pull complete 
11c62d923848: Pull complete 
365846b6db74: Pull complete 
068806c0c7c7: Pull complete 
c974b7720ca1: Pull complete 
586d5e183876: Pull complete 
2851d4256382: Pull complete 
9b9ad1445fab: Pull complete 
Digest: sha256:4901bf2adb79a10fa420454a67dfd2417418fac517fead723b085cd4a80e6dfc
Status: Downloaded newer image for ipfs/go-ipfs:v0.4.18

[root@localhost mnt]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
ipfs/go-ipfs            v0.4.18             c8b38c3e0676        4 months ago        43.2MB

1.2 生成IPFS容器

[root@localhost opt]# docker run -d --name ipfs_host -e IPFS_PROFILE=server -v $ipfs_staging:/export -v /opt/ipfs/:/data/ipfs --network=host ipfs/go-ipfs:v0.4.18
58114b2e764f8f64f994b194d4db6b916d8f9549f593621b295d7cf7e420054a

1.3 查看IPFS容器日志

[root@localhost opt]# docker logs -f ipfs_host
Changing user to ipfs
ipfs version 0.4.18
initializing IPFS node at /data/ipfs
generating 2048-bit RSA keypair...done
peer identity: QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg
to get started, enter:

    ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Initializing daemon...
go-ipfs version: 0.4.18-6f19dd5
Repo version: 7
System version: amd64/linux
Golang version: go1.11.1
Swarm listening on /ip4/10.20.29.133/tcp/4001
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.17.0.1/tcp/4001
Swarm listening on /ip4/172.18.0.1/tcp/4001
Swarm listening on /ip4/172.19.0.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/10.20.29.133/tcp/4001
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/172.17.0.1/tcp/4001
Swarm announcing /ip4/172.18.0.1/tcp/4001
Swarm announcing /ip4/172.19.0.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
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

1.4 查看宿主机映射目录下的文件

[root@localhost ipfs]# pwd
/opt/ipfs
[root@localhost ipfs]# ls
api  blocks  config  datastore  datastore_spec  keystore  repo.lock  version

1.5 使用浏览器访问 http://10.20.29.133:5001/webui

注:

IP地址即为服务器IP

1.6 设置跨源请求

此时,应该页面应该会出现错误,IPFS API无法跨源(CORS)请求,需要设置IPFS API以允许跨源(CORS)请求

1.6.1 进入ipfs容器

[root@localhost ipfs]# docker exec -it ipfs_host sh
/ #

1.6.2 在容器内输入以下命令,进行配置:

/ # ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://10.20.29.133:5001", "https://webui.ipfs.io"]'
/ # ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
/ #  ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

1.6.3 退出容器,重启容器,使配置生效

[root@localhost ipfs]# docker restart ipfs_host 
ipfs_host

此时,按照以上方法,部署出第二个节点

1.7 互相添加bootstrap节点

1.7.1 查看IPFS节点1的ID

进入容器,查看ID:

[root@localhost ~]# docker exec -it ipfs_host sh
/ # 
/ # ipfs id
{
    "ID": "QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
    "PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDxScq0G0AukaBHUmMNmg7okGqVr22waiugJXjmviGrKJo8fWnfYOaW/NcYrLKUqcvy2fdHVvUpEbMMp7fJKl4/dYB6vJY4/XowR+vz2sP045nVJ7F6arU8KHgX3V2H1wQntKTy67dXQ0RG+z+BuWMuUndAelDrw5ffHEkIR0LLcedlGT3LVFCNKEd/9ZSNsuks1X0sTpvXyolyaLrdet7EPPfjU84UeAPf4TpMGZmG0jCwBefIk4WSfE+A5boKUY/W818+NaE0e+XKW1uNZOeeNJ26uBQMs2TSVnMe4oYm1PCLUS6DNiKcDRwUBJtDplxfrgtV0S+2NaRdSWNQuMCfAgMBAAE=",
    "Addresses": [
        "/ip6/::1/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
        "/ip4/127.0.0.1/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
        "/ip4/10.20.29.133/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
        "/ip4/172.17.0.1/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
        "/ip4/172.18.0.1/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg",
        "/ip4/172.19.0.1/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg"
    ],
    "AgentVersion": "go-ipfs/0.4.18/6f19dd5",
    "ProtocolVersion": "ipfs/0.1.0"
}

1.7.2 进入IPFS节点2,添加节点1 的ID

[root@ipfs2 ipfs]# docker exec -it ipfs_host sh
/ # 
/ # ipfs bootstrap add /ip4/10.20.29.133/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg
added /ip4/10.20.29.133/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg

1.7.3 重启IPFS节点2的容器,使配置生效

[root@ipfs2 ipfs]# docker restart ipfs_host
ipfs_host

1.7.4 进入IPFS节点2容器查看boostrap节点

[root@ipfs2 ipfs]# docker exec -it ipfs_host sh
/ # 
/ # ipfs bootstrap list
/ip4/10.20.29.133/tcp/4001/ipfs/QmUJ9iuDTt44pZgxaAxQZGTmfBVkWi3hZyC9APU6dsANKg

按照以上方法,在ipfs节点1中添加节点2的ID信息

二、多节点共享密钥

注:

同一个IPFS私链内的所有节点必须共享同一个密钥才能加入。

首先我们使用密钥创建工具,创建一个密钥。

密钥工具下载地址: https://github.com/Kubuxu/go-ipfs-swarm-key-gen

2.1 安装go语言环境

因为密钥生成需要go 支持,如果本地服务器未安装 go ,请先下载安装 go

2.1.1 下载go安装包

[root@localhost mnt]# wget  https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz
[root@localhost go]# ls
go1.11.linux-amd64.tar.gz

2.1.2 解压安装包

[root@localhost mnt]# tar zxvf go1.11.linux-amd64.tar.gz 
[root@localhost mnt]# ls
go  go1.11.linux-amd64.tar.gz
[root@localhost mnt]# cd go
[root@localhost go]# ls
api  AUTHORS  bin  CONTRIBUTING.md  CONTRIBUTORS  doc  favicon.ico  lib  LICENSE  misc  PATENTS  pkg  README.md  robots.txt  src  test  VERSION

2.1.3 设置go的环境变量

# 安装路径
export GOROOT=/mnt/go       #安装路径
export GOPATH=/mnt/godemo   #下载的安装包路径,默认在root目录下
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

2.1.4 生效go语言环境

[root@localhost go]# source  /etc/profile

2.1.5 查看go语言版本

[root@localhost go]# go version
go version go1.11 linux/amd64

2.2 安装秘钥工具

2.2.1 下载秘钥

[root@localhost mnt]# go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen

2.2.2 安装秘钥

下载后的秘钥安装包在go的安装包目录下
[root@localhost mnt]# cd godemo/
[root@localhost godemo]# ls
bin  src
[root@localhost godemo]# cd bin
[root@localhost bin]# ls
ipfs-swarm-key-gen
[root@localhost bin]# pwd
/mnt/godemo/bin
[root@localhost bin]# ipfs-swarm-key-gen > /opt/ipfs/swarm.key

将生成的key重定向至容器映射目录下,并命名为:swarm.key

2.2.3 查看生成的swarm.key

安装完后,查看生成的swarm.key

[root@localhost bin]# cd /opt/ipfs/
[root@localhost ipfs]# ls
api  blocks  config  datastore  datastore_spec  keystore  repo.lock  swarm.key  version
[root@localhost .ipfs]# cat swarm.key 
/key/swarm/psk/1.0.0/
/base16/
07e09ee139320cd410cd48dda9dcd57f4978ca1be5f813aaea8d9faa9073f146

注意:

此秘钥不能向其他人透露,否则别人可加入到你的节点中!!!

以上,便是IPFS部署私链的全部过程

api:
http://10.20.29.133:5001/webui/ 使用浏览器查看IPFS节点状态

注:IP地址即为服务器IP地址

网关:
http://10.20.29.92:8080/ipfs/QmWM2XF311P96fHvseDzBzFXAKfdWLzYVcqXMfpF3in3YC

参看文件内容详情

后面的hash值为文件上链哈希,如果此哈希文件已经上链,那么前面的IP地址可以是私链当中任何一个节点的IP地址

若需要查看web页面内容,请点击IPFS浏览器图片

相关文章
|
4月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
794 108
kde
|
2月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
kde
780 4
|
4月前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
275 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
3月前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
357 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
4月前
|
运维 Cloud Native 开发者
Docker:现代化应用开发与部署的神器
Docker:现代化应用开发与部署的神器
234 101
|
4月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
141 0
|
2月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
120 5
|
3月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
230 13
docker 部署 sftp
|
3月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
1069 6