how to map a local folder as the volume the docker container or image?

I am wondering if I can map the volume in the docker to another folder in my linux host. The reason why I want to do this is, if I don’t misunderstand, the default mapping folder is in /var/lib/docker/… and I don’t have the access to this folder. So I am thinking about changing that to a host’s folder I have access (for example /tmp/) when I create the image. I’m now able to modify Dockerfile if this can be done before creating the image. Or must this be done after creating the image or after creating the container?

  • Passing command line arguments through the Remote API
  • access grunt serve inside docker
  • Ubuntu14.04 vs Ubuntu12.04 docker images
  • Error when pushing docker image to registry in Jenkinsfile
  • DevOps Simple Setup
  • Remote Debugging .NET Core Linux Docker Container - “the current source is different from the version built into .dll”
  • How to set hosts in docker for mac
  • Docker 1.4.1 fails to start on Fedora 21: FATA[0000] EOF
  • How to move docker containers between different hosts
  • How do I check that a docker host is in swarm mode?
  • How to log in gcloud with a dockerfile
  • Docker - A clean tomcat image
  • 2 Solutions collect form web for “how to map a local folder as the volume the docker container or image?”

    Docker doesn’t have any tools I know of to map named or container volumes back to the host, though they are just sub directories under /var/lib/docker so writing your own tool wouldn’t be impossible, but you’d need root access to run it. Note that with access to docker on the host, there are likely a lot of ways to access root privileges on the host. Creating a hard link to the target folder should be all that’s needed if both source and target are on the same file system.

    The docker way to access the named volume would be to create a disposable container to access your files. You can even create an additional host volume to export the data. E.g.

    docker run -it --rm \
      -v test:/source -v `pwd`/data:/target \
      busybox /bin/sh -c "tar -cC /source . | tar -xC /target"'

    Where “test” is the named volume you want to export/copy. You may need to also run a chown -R $uid /target in a container to change everything to your uid on the host.

    I found this article which helps me to use a local directory as the volume in docker.

    Command I use while creating a new container:

    docker run -d -P -name randomname -v /tmp/localfolder:/volumepath imageName

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.