Question

Docker container share volume is not working

Hi Guys, I would like to share a volume,my Apache load balance is doing redirect to specific container. I have cache on my code, we can’t go with cluster or pm2 module.

echo "Create N/W"
docker network create --subnet=123.45.6.0/16 selnet 
echo "Start Db Conatiner"
docker run -t -d --net selnet --ip 123.45.6.2 --name xDB --restart always -p 27017:27017 -v dev_mongodb_volume:/data/db:Z docker.xyz.com/xyz-apid/digital_x_dev/mongo:version1.0

echo "Start app Conatiner"
docker run -t -d -e PORT=8000 --net selnet --ip 123.45.6.3 --link=xDB:mongodb --restart always -v dev_images_volume:/apps/data/images/:Z -v dev_files_volume:/apps/data/files/:Z -v dev_dx_logs_volume:/root/.pm2/logs/:Z -p 8000:8000 --name AppContainer -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8001 --net selnet --ip 123.45.6.5 --link=xDB:mongodb --restart always -p 8001:8001 --name AppContainer1 --volumes-from AppContainer:AppContainer1 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8002 --net selnet --ip 123.45.6.6 --link=xDB:mongodb --restart always -p 8002:8002 --name AppContainer2 --volumes-from AppContainer:AppContainer2 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8003 --net selnet --ip 123.45.6.7 --link=xDB:mongodb --restart always -p 8003:8003 --name AppContainer3 --volumes-from AppContainer:AppContainer3 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8004 --net selnet --ip 123.45.6.8 --link=xDB:mongodb --restart always -p 8004:8004 --name AppContainer4 --volumes-from AppContainer:AppContainer4 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8005 --net selnet --ip 123.45.6.9 --link=xDB:mongodb --restart always -p 8005:8005 --name AppContainer5 --volumes-from AppContainer:AppContainer5 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8006 --net selnet --ip 123.45.6.10 --link=xDB:mongodb --restart always -p 8006:8006 --name AppContainer6 --volumes-from AppContainer:AppContainer6 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8007 --net selnet --ip 123.45.6.11 --link=xDB:mongodb --restart always -p 8007:8007 --name AppContainer7 --volumes-from AppContainer:AppContainer7 -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null

echo "Start apache Conatiner"
docker run -t -d --net selnet --ip 123.45.6.4 --restart always -p 80:80 -p 443:443 --name AppApachedigitalocean -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com:8000 -v dev_apache_logs_volume:/etc/httpd/logs:Z docker.xyz.com/xyz-apid/digital_x_dev/apache_ssl:version1.4



cd dist
sudo su
docker cp AppContainer:/apps/x/backend/dist/ .
docker cp dist/. AppApachedigitalocean:/var/www/html/.
echo "start digitalocean-dev"
docker container exec -d AppContainer mv /apps/x/backend/dist /apps/x/backend/dist1

Working Code, but can’t share files or folders with other containers:

echo "Create N/W"
docker network create --subnet=123.45.6.0/16 selnet 
echo "Start Db Conatiner"
docker run -t -d --net selnet --ip 123.45.6.2 --name xDB --restart always -p 27017:27017 -v dev_mongodb_volume:/data/db:Z docker.xyz.com/xyz-apid/digital_x_dev/mongo:version1.0

echo "Start app Conatiner"
docker run -t -d -e PORT=8000 --net selnet --ip 123.45.6.3 --link=xDB:mongodb --restart always -v dev_images_volume:/apps/data/images/:Z -v dev_files_volume:/apps/data/files/:Z -v dev_dx_logs_volume:/root/.pm2/logs/:Z -p 8000:8000 --name AppContainer -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8001 --net selnet --ip 123.45.6.5 --link=xDB:mongodb --restart always -p 8001:8001 --name AppContainer1  -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8002 --net selnet --ip 123.45.6.6 --link=xDB:mongodb --restart always -p 8002:8002 --name AppContainer2  -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8003 --net selnet --ip 123.45.6.7 --link=xDB:mongodb --restart always -p 8003:8003 --name AppContainer3  -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null
docker run -t -d -e PORT=8004 --net selnet --ip 123.45.6.8 --link=xDB:mongodb --restart always -p 8004:8004 --name AppContainer4  -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com docker.xyz.com/xyz-apid/digital_x_dev/backend:version1.4.0 tail -f /dev/null

echo "Start apache Conatiner"
docker run -t -d --net selnet --ip 123.45.6.4 --restart always -p 80:80 -p 443:443 --name AppApachedigitalocean -h digitalocean.aps-dev.aws-nonprod.xyzcloud.com:8000 -v dev_apache_logs_volume:/etc/httpd/logs:Z docker.xyz.com/xyz-apid/digital_x_dev/apache_ssl:version1.4



cd dist
sudo su
docker cp AppContainer:/apps/x/backend/dist/ .
docker cp dist/. AppApachedigitalocean:/var/www/html/.
echo "start digitalocean-dev"
docker container exec -d AppContainer mv /apps/x/backend/dist /apps/x/backend/dist1


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Bobby Iliev
Site Moderator
Site Moderator badge
August 5, 2020
Accepted Answer

Hi there @kalapanabudhe,

I believe that when you do --volumes-from it needs to be followed only by the name of the container that you want to use the volumes from. Have you tried chaning the following:

--volumes-from AppContainer:AppContainer1 

To:

--volumes-from AppContainer

I ran the following test and it worked as expected:

  • First I created container called test1 and with a volume called dev_images_volume:
docker run -t -d  -v dev_images_volume:/test --name test1 nginx

Then I used the --volumes-from flag to create a second container called test2:

docker run -t -d  --volumes-from test1:tes2 --name test2 nginx

After checking the containers both were sharing the same volume.

Hope that this helps!

Regards,

Bobby

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more