Docker Volumes
In the last post we saw that any file system change inside a docker container is lost if not committed to the image.
What if we want to share data between containers?
We can use Docker’s Data Volumes and Data Volume Containers .
Data Volumes or Data Volume Containers?
Data Volumes feature allows us to mount a local directory from the host inside a container. That looks good but somehow it breaks the concept of isolation between host and container.
Data Volume Containers create a new container that will store data between container, maintaining the isolation between host and containers.
For the sake of simplicity I’ll use Data Volumes in the next examples even if I agree Data Volume Containers are a better way to manage containers data (READ THIS ).
Use Data Volumes
To use Data Volumes just add a few options when starting the container:
mkdir dockervolume
echo "test123" > ./dockervolume/test.txt
docker run -i -t -v /root/dockervolume:/volume ubuntuplus /bin/bash
Verify the directory is accessible from inside the container:
root@f4dddb24eb83:/# ls /volume/
test.txt
root@f4dddb24eb83:/# cat /volume/test.txt
test123
root@f4dddb24eb83:/#
Apply some changes to the file:
root@f4dddb24eb83:/# echo "test456" >> /volume/test.txt
root@f4dddb24eb83:/# cat /volume/test.txt
test123
test456
Now leave the container with CTRL+P CTRL+Q and verify the changes were applied to the host filesystem:
root@ubuntusrv:~# cat ./dockervolume/test.txt
test123
test456
Great! When can now move on to the next post about Docker networking . Stay tuned!