• This repository has been archived on 22/Aug/2017
  • Stars
    star
    120
  • Rank 289,914 (Top 6 %)
  • Language
    Go
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿณ This is an open source volume plugin that allows using an ipfs filesystem as a volume.

๐Ÿณ docker-volume-ipfs

GoDoc Build Status Go Report Card License codecov

This is an open source volume plugin that allows using an ipfs filesystem as a volume.

$ docker-volume-ipfs &
$ docker run -it --rm -v QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme:/data --volume-driver=ipfs busybox cat data
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

Goals

The main goal is to be able to create docker volumes that are backed by the IPFS filesystem.ย They could be named volumes, anonymous volumes. The plugin should also work in a cluster / swarm environment (but by its nature it should be built-in).

First, let's define a "format" for creating volumes. There is two cases: docker volume create and docker run -v.

For docker volume create, it could be an option ipfs=, ipns=...

$ docker volume create --driver=ipfs --opt ipfs=QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT --name ipfs-welcome
$ docker run -v ipfs-welcome:/ipfs/welcome busybox cat /ipfs/welcome/readme
Hello and Welcome to IPFS!

โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•
โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•  โ•šโ•โ•โ•โ•โ–ˆโ–ˆโ•‘
โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘
โ•šโ•โ•โ•šโ•โ•     โ•šโ•โ•     โ•šโ•โ•โ•โ•โ•โ•โ•

If you're seeing this, you have successfully installed
# [โ€ฆ]
# would also work with ipns
$ docker volume create --driver=ipfs --opt ipns=ipfs.io --name ipfs-io-website
$ docker run -v ipfs-io-website:/var/www/html nginx

For -v directly in docker run (a.k.a. anonymous volume), we could namespace it somehow.

# Default to ipfs
$ docker run -it --rm -v QmPXME1oRtoT627YKaDPDQ3PwA8tdP9rWuAAweLzqSwAWT/readme:/data --volume-driver=ipfs busybox cat data
Hello and Welcome to IPFS!
# [โ€ฆ]
$ docker run -it --rm -v $(docker volume create --driver=ipfs --opt ipns=ipfs.io):/var/www/html --volume-driver=ipfs nginx

TODO(s)

  • Use ipfs daemon API instead of making the assumption that a daemon is running and mounting ipfs using fuse
  • Support ipfs mounts (via fuse)
  • Support ipns mounts
  • Create a volume v2 plugin

More Repositories

1

emacs-config

๐Ÿฒ Personal emacs configuration (DEPRECATED)
Emacs Lisp
40
star
2

java-config

โ˜• my personal java-related configuration
Shell
23
star
3

buildkit-tekton

Buildkit frontend to run Tekton objects locally as well as a tkn plugins
Go
22
star
4

ram

Moved to GitLab: A golang opiniated continuous testing tool ๐Ÿ
Go
19
star
5

docker-events

๐Ÿณ A tiny library on top of docker/engine-api to handle docker events
Go
14
star
6

vcsh-home

vcsh config base repository (required before all others)
Perl
14
star
7

home

๐Ÿธ home configuration files
Emacs Lisp
7
star
8

nixos-configuration

๐Ÿธ my Nixos configuration
Nix
6
star
9

ape

Moved to GitLab : ๐Ÿ’ a git mirror *upstream* updater
Go
6
star
10

sec

Move to GitLab: Sec ยง โ€” a golang opiniated dependency updater
Go
6
star
11

devoxxfr-orchestration-kit

JavaScript
5
star
12

chapeau-rouge

A nix flake / overlay with some Red Hat tools maintained by @vdemeester
Nix
5
star
13

ansibles

๐Ÿ‘ป DEPRECATED โ€” My personnal playbooks (for bootstrap and maintaining my desktops, laptops and servers)
Shell
4
star
14

git-config

๐Ÿถ personal git configuration
Shell
4
star
15

xmonad-config

DEPRECATED xmonad config used with KDE4
Haskell
4
star
16

spring-typesafe-config

An experiments to use typesafehub/config as a configuration file source for Spring
Java
4
star
17

vegetable-resolver

An experimental tektoncd/pipeline resolver
Go
3
star
18

shakers

๐Ÿน A collection of go-checker checkers
Go
3
star
19

xorg-config

๐Ÿ— personal xorg-related configuration
3
star
20

ergodox

๐Ÿข Some stuff around the ergodox(es)-ez I have
C
3
star
21

kobw

kobw : Knative Openshift Build Wrapper
Go
3
star
22

ocf-sandbox

Go
3
star
23

sh-config

๐Ÿš personal shells configuration
Shell
3
star
24

polydactyl

Random cat generator
Go
3
star
25

debian-config

mirror of my personal debian-related configuration, managed using vcsh and mr
2
star
26

canard

Parse bank CSV into `ledger convert` compatible files
Rust
2
star
27

opimpeccable

A PoC of an OpenShift Pipelines operator building on top of tektoncd/operator
Go
2
star
28

ansible-sslh

sslh ansible role
2
star
29

lord

A `tool` to declaratively describe your container image and generate `Dockerfile`, Tekton `Task` and moreโ€ฆ
Go
2
star
30

awesome-config

my personal awesome configuration, managed using vcsh and mr
Lua
1
star
31

tmux-config

๐Ÿ personal tmux configuration
Shell
1
star
32

tkn-local-action

1
star
33

libmason

๐Ÿณ ๐Ÿ‘ท docker client-side builder helper library
Go
1
star
34

deprecated

Deprecated repositories/codes.
Shell
1
star
35

ssh-config

๐Ÿก my personal ssh configuration
Shell
1
star
36

python-config

๐Ÿ my personal python configuration files
Shell
1
star
37

mvnw

Maven (not so awesome) wrapper
Shell
1
star
38

openshift-pipelines-samples

JavaScript
1
star
39

devoxxfr-junit-docker

CSS
1
star
40

scripts

๐Ÿฏ my personal scripts
Shell
1
star
41

tuck

๐Ÿ„ symlink farm manager ร -la-stow
Go
1
star
42

paw

Tekton Task and Pipeline authoring helper
Go
1
star
43

blog

๐Ÿช Sources of my personal blog (hosted here for now..)
HTML
1
star
44

orchestration-kit-snowcamp-2017

"Orchestration kit with docker swarm mode" talk for Snowcamp 2017
JavaScript
1
star
45

vaadin-container-utils

Fork of @xgbi/vaadin-container-utils (for personal contribution)
Java
1
star
46

break-all-the-thing

A repo to store things that break software :D
Go
1
star
47

haskell-config

๐Ÿช my personal haskell configuration
1
star
48

setup-tektoncd

An action to setup tekton on a kubernetes instance in a GitHub workflow
1
star
49

machines

Virtual machines recipe repository
Nix
1
star
50

syncthing-cli

Mirror of https://git.dtluna.net/dtluna/syncthing-cli
Go
1
star
51

infrakit.digitalocean

Infrakit plugin(s) for Digitalocean
Go
1
star
52

toolboxes

containers/toolbox boxes โ€” images for unprivileged development environment
Dockerfile
1
star
53

vdemeester-gitolite-local-code

My addition to gitolite than can be added as local-code in the gitolite-admin repo (http://sitaramc.github.com/gitolite/cust.html#pushcode)
Perl
1
star
54

yak

Go
1
star
55

praetorian

A ssh praetorian (bouncer, minder or whatever) ; it's just a cool restricted command script.
Go
1
star
56

talk-docker-from-night-to-daylight

Docker talk @zenika :)
Shell
1
star
57

clasp

๐Ÿš a mini hook / rebuild configuration binary written in Go
Go
1
star
58

vim-config

mirror of my personal vim configuration, managed using vcsh and mr
Vim Script
1
star