All Projects → linode → docker-volume-linode

linode / docker-volume-linode

Licence: Apache-2.0 license
Docker Volume driver for Linode Block Storage

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to docker-volume-linode

docker-volume-rclone
Use Rclone as a backend for docker volume (also as a plugin). This permit to easely mount a lot of cloud provider (https://rclone.org/overview).
Stars: ✭ 97 (+148.72%)
Mutual labels:  docker-plugin, docker-volume
backup-docker
A simple command line tool to backup and restore docker containers along with their volumes
Stars: ✭ 58 (+48.72%)
Mutual labels:  volume
Ncpamixer
ncurses PulseAudio Mixer
Stars: ✭ 234 (+500%)
Mutual labels:  volume
paragon apfs sdk ce
Paragon APFS SDK Free
Stars: ✭ 97 (+148.72%)
Mutual labels:  volume
xfsvol
Local Docker Volumes with XFS Project Quota
Stars: ✭ 24 (-38.46%)
Mutual labels:  docker-plugin
docker-swarm-elastic-agent-plugin
Docker swarm based elastic agents for GoCD
Stars: ✭ 17 (-56.41%)
Mutual labels:  docker-plugin
Volplugin
**EXPERIMENTAL** Contiv Storage: Policy backed Clustered Storage (via Ceph or NFS) for Docker
Stars: ✭ 217 (+456.41%)
Mutual labels:  volume
Volumey
Volume mixer that allows you to set up global hotkeys to control your Windows audio system.
Stars: ✭ 139 (+256.41%)
Mutual labels:  volume
soundfixer
A WebExtension that lets you fix sound problems in e.g. YouTube videos
Stars: ✭ 102 (+161.54%)
Mutual labels:  volume
dicom2stl
Python script to extract a STL surface from a DICOM image series.
Stars: ✭ 151 (+287.18%)
Mutual labels:  volume
ZHStatusVolume
[iOS] hide system volume hud, display upon status bar
Stars: ✭ 49 (+25.64%)
Mutual labels:  volume
dovesnap
Docker OVS Network Plugin
Stars: ✭ 18 (-53.85%)
Mutual labels:  docker-plugin
volctl
Per-application volume control and OSD for Linux desktops.
Stars: ✭ 95 (+143.59%)
Mutual labels:  volume
miniovol
Minio Docker volume plugin. Create docker volumes that mount Minio buckets. Minio is S3 compatible.
Stars: ✭ 14 (-64.1%)
Mutual labels:  docker-plugin
linode-blockstorage-csi-driver
Container Storage Interface (CSI) Driver for Linode Block Storage
Stars: ✭ 50 (+28.21%)
Mutual labels:  volume
Fuckingvolumeslider
android实现的反人类音量滑块
Stars: ✭ 234 (+500%)
Mutual labels:  volume
win-audio
Get, Set and Watch Speaker/Microphone Volume on Windows
Stars: ✭ 46 (+17.95%)
Mutual labels:  volume
volpy
Volume Calculations for Digital Elevation Models in Python
Stars: ✭ 26 (-33.33%)
Mutual labels:  volume
moosefs-csi
Container Storage Interface (CSI) for MooseFS
Stars: ✭ 44 (+12.82%)
Mutual labels:  volume
funcd
Daemon for functional keys (works without X11)
Stars: ✭ 14 (-64.1%)
Mutual labels:  volume

Docker Volume Driver For Linode

Build

This volume plugin adds the ability to manage Linode Block Storage as Docker Volumes from within a Linode. Good use cases for volumes include off-node storage to avoid size constraints or moving a container and the related volume between nodes in a Swarm.

Requirements

  • Linux (tested on Fedora 34, should work with other versions and distributions)
  • Docker (tested on version 20, should work with other versions)

Installation

docker plugin install --alias linode --grant-all-permissions\
linode/docker-volume-linode\
linode-token=<linode token>

Driver Options

Option Name Description
linode-token Required The Linode APIv4 Personal Access Token to use. (requires linodes:read_write volumes:read_write events:read_only)
linode-label The label of the current Linode. This is only necessary if your Linode does not have a resolvable Link Local IPv6 Address.
force-attach If true, volumes will be forcibly attached to the current Linode if already attached to another Linode. (defaults to false) WARNING: Forcibly reattaching volumes can result in data loss if a volume is not properly unmounted.
mount-root Sets the root directory for volume mounts (defaults to /mnt)
log-level Sets log level to debug,info,warn,error (defaults to info)
socket-user Sets the user to create the docker socket with (defaults to root)

Options can be set once for all future uses with docker plugin set.

Changing the plugin configuration

The plugin can also be configured (or reconfigured) in multiple steps.

docker plugin install --alias linode linode/docker-volume-linode
docker plugin disable linode
docker plugin set linode linode-token=<linode token>
docker plugin enable linode

Docker Swarm

Volumes can be mounted to one container at the time because Linux Block Storage volumes can only be attached to one Linode at the time.

Usage

All examples assume the driver has been aliased to linode.

Create Volume

Linode Block Storage volumes can be created and managed using the docker volume create command.

$ docker volume create -d linode my-test-volume
my-test-volume

If a named volume already exists on the Linode account and it is in the same region of the Linode, it will be reattached if possible. A Linode Volume can be attached to a single Linode at a time.

Create Options

The driver offers driver specific volume create options:

Option Type Default Description
size int 10 the size (in GB) of the volume to be created. Volumes must be at least 10GB in size, so the default is 10GB.
filesystem string ext4 the filesystem argument for mkfs when formating the new (raw) volume (xfs, btrfs, ext4)
delete-on-remove bool false if the Linode volume should be deleted when removed
$ docker volume create -o size=50 -d linode my-test-volume-50
my-test-volume-50

Volumes can also be created and attached from docker run:

docker run -it --rm --mount volume-driver=linode,source=test-vol,destination=/test,volume-opt=size=25 alpine

Multiple create options can be supplied:

docker run -it --rm --mount volume-driver=linode,source=test-vol,destination=/test,volume-opt=size=25,volume-opt=filesystem=btrfs,volume-opt=delete-on-remove=true alpine

List Volumes

$ docker volume ls
DRIVER              VOLUME NAME
linode:latest       my-test-volume
linode:latest       my-test-volume-50

Use Volume

$ docker run --rm -it -v my-test-volume:/usr/local/apache2/htdocs/ httpd
...

Remove Volumes

$ docker volume rm my-test-volume
my-test-volume

$ docker volume rm my-test-volume-50
my-test-volume-50

Manual Installation

  • Install Golang: https://golang.org/
  • Get code and Compile: go get -u github.com/linode/docker-volume-linode

Run the driver

docker-volume-linode --linode-token=<token from linode console>

Debugging

Enable Debug Level on plugin

The driver name when running manually is the same name as the socket file.

docker plugin set docker-volume-linode log-level=debug

Enable Debug Level in manual installation

docker-volume-linode --linode-token=<...> --log-level=debug

Development

A great place to get started is the Docker Engine managed plugin system documentation.

Tested On

Fedora 34
Tested With:
Client:
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Sun Aug 15 22:43:35 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Sun Aug 15 00:00:00 2021
  OS/Arch:          linux/amd64
  Experimental:     false

Discussion / Help

Join us at #linodego on the gophers slack

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].