Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Boot2Docker mount host volume to externalize data using Windows

I am trying to mount a host volume to a Docker container for MongoDB. The Dockerfile contains the following.

# Create the MongoDB data directory
RUN mkdir -p /data/db
# Identify mount point
VOLUME /data/db

--> The docker image has a name called mongo.

But when i try to start the image and mount a local Windows folder using:

docker run -d -v /c/Users/310145787/Desktop/mongo:/data/db mongo

I get an error message saying:

invalid value "c:\Users\310145787\Desktop\mongo;C:\Program Files (x86)\Git\data\db" for flag -v: \Users\310145787\Desktop\mongo;C:\Program Files (x86)\Git\data\db is not an absolute path

I checked with boot2docker ssh if the path is accessible and it seems ok. docker@boot2docker:/c/Users/310145787/Desktop/mongo

Any clue what is going wrong over here? Or what am i missing?

Using Boot2Docker 1.6, the Dockerfile can be found here

like image 397
Marco Avatar asked Apr 22 '15 05:04

Marco


People also ask

How do I mount a host volume to a Docker container?

Find out the name of the volume with docker volume list. Shut down all running containers to which this volume is attached to. Run docker run -it --rm --mount source=[NAME OF VOLUME],target=/volume busybox.

Can data volumes can be mounted in read only mode?

Data volumes can be shared across containers too. They could be mounted in read-only mode too.


2 Answers

I was pointed out to a workaround. Instead of using a single slash /c/Users/ using a double slash works //c/Users/

I checked and the mounting of the volume works ok now!

like image 194
Marco Avatar answered Oct 17 '22 17:10

Marco


I experienced the same problem.

see: https://github.com/docker/docker/issues/12590

If you're using git bash on windows, msysgit converts paths like /c/users to c:\users (not something you want because the path inside the boot2docker VM is /c/Users)

If you use cmd.exe or powershell you shouldn't be having this problem.

I was successfully able to mount a drive after I used cmd.

The Instructions below are for starting Boot2Docker with the windows cmd

Boot2Docker Up
set DOCKER_HOST=tcp://192.168.59.103:2376
set DOCKER_CERT_PATH=C:/Users/<yourusername>/.boot2docker/certs/boot2docker-vm
set DOCKER_TLS_VERIFY=1

docker run -d -v /c/Users/310145787/Desktop/mongo:/data/db mongo

You should be good to go :-)

like image 38
Rob Avatar answered Oct 17 '22 18:10

Rob