Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mounting local volumes to remote docker container, Possible?

Tags:

docker

volumes

I'm pretty comfortable using Docker recently, typically to test websites to make sure they run properly on servers before I deploy them.

Typically, I mount my local directory to the locally running image like:

docker run -v c:\temp\website:/var/www/html (you get the picture)

What I am curious about is if there is a way to mount my local volume to a remote server running docker. I'm pretty sure the answer is no, unless I poke wholes in firewalls and such to make a local volume share externally.

But, I thought I would ask. Docker seems to be doing some amazing things quickly.

like image 551
user3888307 Avatar asked Dec 12 '16 22:12

user3888307


People also ask

How do I mount a local drive to a Docker container?

How to Mount Local Directories using docker run -v. Using the parameter -v allows you to bind a local directory. -v or --volume allows you to mount local directories and files to your container. For example, you can start a MySQL database and mount the data directory to store the actual data in your mounted directory.

Can Docker containers share volumes?

You can manage volumes using Docker CLI commands or the Docker API. Volumes work on both Linux and Windows containers. Volumes can be more safely shared among multiple containers. Volume drivers let you store volumes on remote hosts or cloud providers, to encrypt the contents of volumes, or to add other functionality.

How do you attach a volume to Docker container?

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.

Can two Docker containers mount same volume?

Multiple containers can run with the same volume when they need access to shared data. Docker creates a local volume by default.


1 Answers

  1. First share your local directory in Windows. Lets assume your shared folder is \\windowsip\website.
  2. Then login into the remote linux machine where docker engine is running, and be sure you can mount a windows shared folder: sudo apt install cifs-utils
  3. Try to connect to your share: sudo mount -t cifs -o user=******,password=******,uid=ubuntu,gid=ubuntu //windowsip/website /home/ubuntu/website
  4. When everything is working lets do the same with docker. Create a named volume as follows: docker volume create --driver local --opt type=cifs --opt device='//windowsip/website' --opt o='username=*****,password=*****' website
  5. docker run -v website:/var/www/html

I know it is an old thread but just I had the same problem, hope it helps to others

Okey Okey I didn't read the last part of the question. Yes, you need to poke holes in the firewall. But still is useful, I have a linux server with docker and I use it via VPN when I work from home in my laptop. The container has local access to everything.

like image 102
Carlos Rafael Ramirez Avatar answered Sep 22 '22 05:09

Carlos Rafael Ramirez