Skip to main content

Management tool of VirtualBox Volume for Docker

Project description

It provide function of mounting local directories on the VirtualBox instance with mount option. Using Docker Toolbox.

https://circleci.com/gh/TakesxiSximada/docker-volume.svg?style=svg

Install

Need Docker Toolbox.

$ pip install docker-volume

How to use it

Configuration

$REPO_ROOT/docker-volume.yml

volumes:
  mysql:
    hostpath: ${here}/../volumes/mysql/
    vboxpath: /var/lib/mysql
    uid: 0
    gid: 0
    dmode: 777
  mongo:
    hostpath: ${here}/../volumes/mongo/
    vboxpath: /var/lib/mongo
    uid: 0
    gid: 0
    dmode: 777
  redis:
    hostpath: ${here}/../volumes/redis/
    vboxpath: /var/lib/redis
    uid: 0
    gid: 0
    dmode: 777

Add volume

$ docker-volume add
EXECUTE: VBoxManage sharedfolder add default --name docker-example_redis --hostpath /path/to/hostdir/volumes/redis
EXECUTE: VBoxManage sharedfolder add default --name docker-example_mysql --hostpath /path/to/hostdir/volumes/mysql
EXECUTE: VBoxManage sharedfolder add default --name docker-example_mongo --hostpath /path/to/hostdir/volumes/mongo

Mount volume

Start docker machine.

$ docker-machine start default
(dev) Starting VM...
Machine "default" was started.
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

mount volume.

$ docker-volume mount
EXECUTE: docker-machine ssh default "sudo mkdir -p /var/lib/mysql &&  sudo mount -t vboxsf -o uid=0,gid=0,dmode=777 docker-example_mysql /var/lib/mysql"
EXECUTE: docker-machine ssh default "sudo mkdir -p /var/lib/mongo &&  sudo mount -t vboxsf -o uid=0,gid=0,dmode=777 docker-example_mongo /var/lib/mongo"
EXECUTE: docker-machine ssh default "sudo mkdir -p /var/lib/redis &&  sudo mount -t vboxsf -o uid=0,gid=0,dmode=777 docker-example_redis /var/lib/redis"

Make sure that it is mounted.

$ docker-machine ssh default "mount | grep /var/lib"
/dev/sda1 on /mnt/sda1/var/lib/docker/aufs type ext4 (rw,relatime,data=ordered)
none on /var/lib/mongo type vboxsf (rw,nodev,relatime)
none on /var/lib/redis type vboxsf (rw,nodev,relatime)
none on /var/lib/mysql type vboxsf (rw,nodev,relatime)

Unmount volume

Unmount volume.

$ docker-volume unmount
EXECUTE: docker-machine ssh default "sudo umount /var/lib/redis"
EXECUTE: docker-machine ssh default "sudo umount /var/lib/mysql"
EXECUTE: docker-machine ssh default "sudo umount /var/lib/mongo"

Make sure that it is unmounted.

$ docker-machine ssh default "mount | grep /var/lib"
/dev/sda1 on /mnt/sda1/var/lib/docker/aufs type ext4 (rw,relatime,data=ordered)

Remove volume

Stop docker machine.

$ docker-machine stop
(dev) Stopping VM...
Machine "default" was stopped.

Remove volume.

$ docker-volume remove
EXECUTE: VBoxManage sharedfolder remove default --name docker-example_mongo
EXECUTE: VBoxManage sharedfolder remove default --name docker-example_mysql
EXECUTE: VBoxManage sharedfolder remove default --name docker-example_redis

Volume name

Volume name is ${REPOSITORY_DIRECTORY_NAME}_${VOLUME_NAME}.

Other

If you want to specify the machine name it?

It specifies the -m or –machine option.

$ docker-volume add --dry-run --machine example
EXECUTE: VBoxManage sharedfolder add example --transient --name docker-volume_repo --hostpath /path/to/hostdir/volumes/docker-volume
EXECUTE: VBoxManage sharedfolder add example --transient --name docker-volume_spam --hostpath /path/to/hostdir/volumes/spam
EXECUTE: VBoxManage sharedfolder add example --transient --name docker-volume_ham --hostpath /path/to/hostdir/volumes/ham

If you want to specify the single volume?

It will specify a volume name if you want to operate a volume.

$ docker-volume add --dry-run spam
EXECUTE: VBoxManage sharedfolder add default --transient --name docker-volume_spam --hostpath /path/to/hostdir/volumes/spam

and it will specify two volume name if you want to operate two volumes.

$ docker-volume add --dry-run spam ham
EXECUTE: VBoxManage sharedfolder add default --transient --name docker-volume_spam --hostpath /path/to/hostdir/volumes/spam
EXECUTE: VBoxManage sharedfolder add default --transient --name docker-volume_ham --hostpath /path/to/hostdir/volumes/ham

If you do not specify a volume name, all volumes are operation.

Development

Source code repository: https://pypi.python.org/pypi/docker-volume

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker-volume-0.3.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

docker_volume-0.3-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file docker-volume-0.3.tar.gz.

File metadata

  • Download URL: docker-volume-0.3.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for docker-volume-0.3.tar.gz
Algorithm Hash digest
SHA256 38b9ce58ebbe8da41d68c9d5bef9c01f9c74757e458fff3e9efe58a1b14c6824
MD5 eef133cfbf4aef64b681ea8b84ab418e
BLAKE2b-256 d84a98fb2ea8d2b83c0ba6a4d4f26589c7a41b2ded5d2bd4044b0a139059924a

See more details on using hashes here.

File details

Details for the file docker_volume-0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_volume-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 50935e27c12499a8a859475931a4170e8c0aec96eda0df2beb6aa7b5818f21ad
MD5 8139f3b8db2217c1d969b705e573ba9f
BLAKE2b-256 c9829959152420ad4dd89b9bd6d9ce55167760b80ff655379b35b9a88825a347

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page