I'm trying to mount my source files to a directory in docker located at /var/dynamo. I'd like to be able to run Docker locally and use my local files as I am working.
with the run command:
docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --name dynamo davesrepo/dynamo
with my Dockerfile
FROM python:3.5.1 WORKDIR /var/dynamo RUN pip3 install tornado EXPOSE 8001
However, when I bash into the container docker exec -it dynamo /bin/bash
and run ls -la
the directory is empty!
root@7d3d338891aa:/var/dynamo# ls -la total 4 drwxr-xr-x 2 root root 40 Dec 29 03:37 . drwxr-xr-x 24 root root 4096 Dec 29 03:36 ..
Running docker inspect dynamo
shows the directory mounted properly
[ { "Id": "7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a", "Created": "2015-12-29T03:37:01.416445958Z", "Path": "python3", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 1314, "ExitCode": 0, "Error": "", "StartedAt": "2015-12-29T03:37:01.516253705Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "19697c9b5c7561b113d817821280971f063ea0187c82343c0832348fb6863c9a", "ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/resolv.conf", "HostnamePath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/hostname", "HostsPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/hosts", "LogPath": "/mnt/sda1/var/lib/docker/containers/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a/7d3d338891aae32e001a3bb31d6be17802d238526830396472b011599a97212a-json.log", "Name": "/dynamo", "RestartCount": 0, "Driver": "aufs", "ExecDriver": "native-0.2", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": [ "/Users/dave/Sites/davesrepo/dynamo:/var/dynamo" ], "ContainerIDFile": "", "LxcConf": [], "Memory": 0, "MemoryReservation": 0, "MemorySwap": 0, "KernelMemory": 0, "CpuShares": 0, "CpuPeriod": 0, "CpusetCpus": "", "CpusetMems": "", "CpuQuota": 0, "BlkioWeight": 0, "OomKillDisable": false, "MemorySwappiness": -1, "Privileged": false, "PortBindings": { "8001/tcp": [ { "HostIp": "", "HostPort": "8001" } ] }, "Links": null, "PublishAllPorts": false, "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "VolumesFrom": null, "Devices": [], "NetworkMode": "default", "IpcMode": "", "PidMode": "", "UTSMode": "", "CapAdd": null, "CapDrop": null, "GroupAdd": null, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "SecurityOpt": null, "ReadonlyRootfs": false, "Ulimits": null, "LogConfig": { "Type": "json-file", "Config": {} }, "CgroupParent": "", "ConsoleSize": [ 0, 0 ], "VolumeDriver": "" }, "GraphDriver": { "Name": "aufs", "Data": null }, "Mounts": [ { "Source": "/Users/dave/Sites/davesrepo/dynamo", "Destination": "/var/dynamo", "Mode": "", "RW": true } ], "Config": { "Hostname": "7d3d338891aa", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "8001/tcp": {} }, "Tty": true, "OpenStdin": false, "StdinOnce": false, "Env": [ "APP_ENV=development", "PYTHONPATH=$PYTHONPATH:/var/dynamo", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=C.UTF-8", "PYTHON_VERSION=3.5.1", "PYTHON_PIP_VERSION=7.1.2" ], "Cmd": [ "python3" ], "Image": "davesrepo/dynamo", "Volumes": null, "WorkingDir": "/var/dynamo", "Entrypoint": null, "OnBuild": null, "Labels": {}, "StopSignal": "SIGTERM" }, "NetworkSettings": { "Bridge": "", "SandboxID": "71d99a7d11908a9d1c0156fd33eb3f0ff5ef9f6697bb77103fe2caa1cf488530", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "8001/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "8001" } ] }, "SandboxKey": "/var/run/docker/netns/71d99a7d1190", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "1cc99b0de89700368f31b43248c90ea45cec756712a2bd2ba2dc57293a5d0a72", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "EndpointID": "1cc99b0de89700368f31b43248c90ea45cec756712a2bd2ba2dc57293a5d0a72", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02" } } } } ]
Docker version is 1.9.1
Cloning From An Existing Container But, if you do need to add a volume to a running container, you can use docker commit to make a new image based on that container, and then clone it with the new volume. Then, you can run the new image, replacing the old image with the cloned one.
To mount a data volume to a container add the --mount flag to the docker run command. It adds the volume to the specified container, where it stores the data produced inside the virtual environment. Replace [path_in_container] with the path where you want to place the data volume in the container.
The most notable difference between the two options is that --mount is more verbose and explicit, whereas -v is more of a shorthand for --mount . It combines all the options you pass to --mount into one field. On the surface, both commands create a PostgreSQL container and set a volume to persist data.
Docker & Virtualbox seem to have an issue with mounting a volume outside of the /Users directory. The only way to fix the issue is to delete the docker machine image, properly set the /Users/yourname directory as the share folder in Virtualbox and create a new docker machine image.
Steps to fix the issue:
docker-machine stop dev
docker-machine rm dev
docker-machine create --driver virtualbox dev
eval "$(docker-machine env dev)"
docker build -t davesrepo/dynamo -f ./Dockerfile .
docker run -v $(pwd):/var/dynamo -d -t -p 8001:8001 --env-file ./dynamo.env --name dynamo davesrepo/dynamo
docker exec -it dynamo /bin/bash
ls
root@42f9e47fa2de:/var/dynamo# ls
Dockerfile README.md __init__.py __pycache__ bin config.ini requirements.txt seed.sql tests
Files!
I found out that I changed my windows password and docker requires windows credentials to mount volumes, you can update it settings > shared drives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With