ContainX/docker-volume-netshare

Name: docker-volume-netshare

Owner: ContainX

Description: Docker NFS, AWS EFS, Ceph & Samba/CIFS Volume Plugin

Created: 2015-10-20 22:21:35.0

Updated: 2018-01-17 04:34:52.0

Pushed: 2018-01-15 14:55:51.0

Homepage: http://netshare.containx.io

Size: 3143

Language: Go

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Docker NFS, AWS EFS & Samba/CIFS Volume Plugin

Build Status release

Mount NFS v3/4, AWS EFS or CIFS inside your docker containers. This is a docker plugin which enables these volume types to be directly mounted within a container.

Documentation http://netshare.containx.io
Chat/Slack https://containx.slack.com
NFS Prerequisites on Linux

NFS needs to be installed on Linux systems in order to properly mount NFS mounts.

It is recommend to try mounting an NFS volume to eliminate any configuration issues prior to running the plugin:

 mount -t nfs4 1.1.1.1:/mountpoint /target/mount
Installation
From Source
 get github.com/ContainX/docker-volume-netshare
 build
From Binaries

Binaries are available through GitHub releases. You can download the appropriate binary, package and version from the Releases page

On Ubuntu / Debian

The method below will install the sysvinit and /etc/default options that can be overwritten during service start.

  1. Install the Package
wget https://github.com/ContainX/docker-volume-netshare/releases/download/v0.34/docker-volume-netshare_0.34_amd64.deb
sudo dpkg -i docker-volume-netshare_0.34_amd64.deb
  1. Modify the startup options in /etc/default/docker-volume-netshare
  2. Start the service service docker-volume-netshare start
Usage
Launching in NFS mode

1. Run the plugin - can be added to systemd or run in the background

sudo docker-volume-netshare nfs

2. Launch a container

docker run -i -t --volume-driver=nfs -v nfshost/path:/mount ubuntu /bin/bash
Launching in EFS mode

1. Run the plugin - can be added to systemd or run in the background

 With File System ID resolution to AZ / Region URI
sudo docker-volume-netshare efs
 For VPCs without AWS DNS - using IP for Mount
sudo docker-volume-netshare efs --noresolve

2. Launch a container

 Launching a container using the EFS File System ID
docker run -i -t --volume-driver=efs -v fs-2324532:/mount ubuntu /bin/bash
 Launching a container using the IP Address of the EFS mount point (--noresolve flag in plugin)
docker run -i -t --volume-driver=efs -v 10.2.3.1:/mount ubuntu /bin/bash
Launching in Samba/CIFS mode
Docker Version < 1.9.0

1. Run the plugin - can be added to systemd or run in the background

sudo docker-volume-netshare cifs --username user --password pass --domain domain --security security

2. Launch a container

 In CIFS the "//" is omitted and handled by netshare
docker run -it --volume-driver=cifs -v cifshost/share:/mount ubuntu /bin/bash
.NetRC support

.NetRC is fully support eliminating users and passwords to be specified in step 1. To use .netrc do the following steps:

1. Create a /root/.netrc file (since netshare needs to be run as a root user). Add the host and credential mappings.

See example:

.netrc
chine some_hostname
   username  jeremy
   password  somepass
   domain    optional
   security  optional
   fileMode  optional
   dirMode   optional

2. Run the plugin

sudo docker-volume-netshare cifs

3. Launch a container

 In CIFS the "//" is omitted and handled by netshare
docker run -it --volume-driver=cifs -v cifshost/share:/mount ubuntu /bin/bash
Docker Version 1.9.0+

Docker 1.9.0 now has support for volume management. This allows you to user docker volume create to define a volume by name so options and other info can be eliminated when running a container.

1. Run the plugin - can be added to systemd or run in the background

sudo docker-volume-netshare cifs

2. Create a Volume

This will create a new volume via the Docker daemon which will call Create in netshare passing in the corresponding user, pass and domain info.

docker volume create -d cifs --name cifshost/share --opt username=user --opt password=pass --opt domain=domain --opt security=security --opt fileMode=0777 --opt dirMode=0777

3. Launch a container

 cifs/share matches the volume as defined in Step #2 using docker volume create
docker run -it -v cifshost/share:/mount ubuntu /bin/bash
Security Option

Some CIFS servers may require a specific security mode to connect. The security option defines the sec option that is passed to mount.cifs. More information about available sec options. e.g.: Apple Time Capsule's require the security mode ntlm.

License

This software is licensed under the Apache 2 license, quoted below.

Copyright 2016 ContainX / Jeremy Unruh

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.