Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to mount Docker container volumes to different path?

Tags:

docker

lxc

Container #1 runs with a volume defined for /data, and I'd like to use the run option --volumes-from to mount this volume to another container, but I'd like to change the path for the second container.

In other words /data from container #1 should be mounted to /custom/data inside container #2.

Is that possible? Is there a solution for this?

Thanks!

like image 453
thasmo Avatar asked Oct 31 '22 20:10

thasmo


1 Answers

It is currently not possible to add custom options to --volumes-from.

There are two possible solutions. However, neither is perfect...

Solution 1

Personally, I do not like this as it only works in Linux. It will not work with Boot2Docker. How to map volume paths using Docker's --volumes-from?

Solution 2

The second solution is to use a sym-link. This works pretty great but there is a caveat at the end.

Run a docker container with an interactive shell and the volumes from container #1; busybox is ideal for this:

docker run --rm -it --volumes-from container-1-name busybox

where container-1-name is the name of container#1.

Within the shell that opens, you can create a symbolic link that points from /custom/data to /data. Assuming that the root to /custom already exists (use mkdir first if not), type:

ln -s /data /custom/data

Now you can check this link exists. You should see something like this:

/ # ls -l custom/
total 0
lrwxrwxrwx    1 root     root             5 Mar  4 08:09 data -> /data

Then you are done with this container. Exit. Now, if you create a new container than uses --volumes-from container-1-name, it can access the contents of /data via /custom/data.

Caveat: You should note that containers using --volumes-from container-1-name will have both /data and /custom/data. There is no way around that using this solution. In most situations, I imagine this is fine. However, if this no good for you, you will need to find another solution.

like image 52
freethebees Avatar answered Nov 09 '22 09:11

freethebees