Hello Team Docker,
Here’s the problem I have with docker, volumes and sibling containers. Everything is working correctly and fine, and I have a work around https://github.com/client9/dmnt but this hack seems smelly.
Here’s a normal working case:
docker run --rm --volumes-from=workspace -v ${PWD}:/test -w /test alpine ls -l
# lots of stuff and displays the current directory-- GOOD
I can write lots of scripts and tools that work using this.
But now let’s say, I love docker so much, that I decide to put my dev environment into container itself,
docker run --rm -it \
-v /var/run/docker.sock:/var/run/docker.sock \
--volumes-from=workspace \
-w /test \
alpine /bin/sh --login
Cool I’m “in docker” and I passed in the docker.sock
so I can create sibling containers, etc. I’m in the /test
directory
Now I run my first script
docker run --rm --volumes-from=workspace -v /test:/test -w /test alpine ls -l
# NO FILES
docker on the host doesn’t know it’s being called from within a container, and so everything is relative to the host, not the container, and not the datavolume And /test on the host is nothing. So this is correct, but ugly.
To work around this I wrote https://github.com/client9/dmnt which checks to see if the items listed in ${PWD} (or whatever you put here) is on a data volume? and if so remaps the command line so this works:
docker run --rm \
-v d5cd7d8a46b907703e623e93ed4d2f7edf9c8cc9c1bdb420c3ad7795b71fec06:/test \
-w /test alpine ls -l
So for instance this always the same, even if on host, or if I’m in sibling container.
docker run --rm $(dmnt .) -w ${PWD} alpine ls -l
But the algorithm dmnt
uses to figure out if a path is on the host or on a data volume is not-great and kinda hacky. Ideally I’d like some flag in the cli that resolves the path listed in the ‘-v’ flag and understands that a path is actually on a data volume.
My apologies on terminology, this is awfully confusing to explain. Hopefully you get the idea.
Am I missing anything? Any improvements? Should I file a ticket/feature request at GitHub.com/docker
Regards,
nickg