Giter VIP home page Giter VIP logo

node-docker-share's Introduction

docker-share

Share local folders with a Docker Machine VM. Currently only capable of adding and mounting transient shares on a running VM.

node npm status Dependency status JavaScript Style Guide

Motivation

On Windows with Docker Toolbox, one can't mount data volumes outside of C:\Users. This makes the use of Docker Compose and relative data volumes (.:/code) rather problematic. As a remedy (when migrating to Windows 10 with Docker for Windows Beta is not an option) we can add a project's directory as a VirtualBox shared folder. Then mount it inside the Docker Machine VM - at the exact same path as on the Windows box so that relative volumes resolve correctly. This tool does this for you (and more, like checking if the share already exists). Its main functionality is roughly equivalent to:

cd C:\projects\my-project

vboxmanage sharedfolder add default ^
  --name my-project --hostpath "%cd%" ^
  --transient

docker-machine ssh default sudo ^
  mkdir -p /c/projects/my-project

docker-machine ssh default sudo ^
  mount -t vboxsf -o ^
  defaults,uid=`id -u docker`,gid=`id -g docker` ^
  my-project /c/projects/my-project

This tool should work on other platforms too. If you've found a use for it, let me know! Or just do a little dance.

Example

These commands should be run after docker-machine start, but before docker run or docker-compose up. Mount the current working directory:

docker-share mount --transient

Mount the current working directory, transient and read-only, at /home/docker/beep on a non-default Docker Machine:

docker-share mount -m my-machine -tr . /home/docker/beep

Roadmap

  • Mount transient share
  • Mount permanent share (check state, stop VM if --force, edit boot script, restart)
  • Unmount

Usage

docker-share <command> [options]

Commands:
  mount    Create shared folder and mount it
  unmount  Unmount and remove shared folder if it exists

Global options:
  --machine, -m  Machine name (DOCKER_MACHINE_NAME or "default")  [string]
  --verbose      Verbose output                                  [boolean]

Run 'docker-share <command> --help' for more information on a command.

mount [local path] [guest path]

Creates a VirtualBox shared folder and mounts it inside the VM. Without arguments, the local and guest path default to the current working directory. A guest path like C:\project is converted to a cygwin-style /c/project.

Options:
  --name, -n       Shared folder name (basename of local path)  [string]
  --readonly, -r   Create read-only shared folder              [boolean]
  --transient, -t  Create temporary shared folder              [boolean]
  --help           Show help                                   [boolean]

Install

With npm do:

npm install docker-share --global

License

MIT © 2016-present Vincent Weevers

node-docker-share's People

Contributors

vweevers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

node-docker-share's Issues

Mount Share not working with Docker-Share

docker-share mount -m default -t . /var/www/magento2
Command failed: docker-machine ssh default sudo mount -t vboxsf -o defaults,uid=id -u docker,gid=id -g docker data /c/Program Files/Git/var/www/magento2
BusyBox v1.24.2 (2016-05-16 13:23:40 UTC) multi-call binary.

Usage: mount [OPTIONS] [-o OPT] DEVICE NODE

Mount a filesystem. Filesystem autodetection requires /proc.

    -a              Mount all filesystems in fstab
    -f              Dry run
    -i              Don't run mount helper
    -v              Verbose
    -r              Read-only mount
    -t FSTYPE[,...] Filesystem type(s)
    -T FILE         Read FILE instead of /etc/fstab
    -O OPT          Mount only filesystems with option OPT (-a only)

-o OPT:
loop Ignored (loop devices are autodetected)
[a]sync Writes are [a]synchronous
[no]atime Disable/enable updates to inode access times
[no]diratime Disable/enable atime updates to directories
[no]relatime Disable/enable atime updates relative to modification time
[no]dev (Dis)allow use of special device files
[no]exec (Dis)allow use of executable files
[no]suid (Dis)allow set-user-id-root programs
[r]shared Convert [recursively] to a shared subtree
[r]slave Convert [recursively] to a slave subtree
[r]private Convert [recursively] to a private subtree
[un]bindable Make mount point [un]able to be bind mounted
[r]bind Bind a file or directory [recursively] to another location
move Relocate an existing mount point
remount Remount a mounted filesystem, changing flags
ro Same as -r

There are filesystem-specific -o flags.
exit status 1
.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.