Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Things under legendu.net/outdated are outdated technologies that the author does not plan to update any more. Please look for better alternatives.

https://ender74.github.io/Sharing-Volumes-With-Docker-Swarm/

Volume

:::bash
docker service create \
    --name nginx \
    --mount type=bind,source=`pwd`/static-site,target=/usr/share/nginx/html \
    -p 80:80 nginx
    https://boxboat.com/2016/08/12/mounting-volumes-docker-swarm-1-12/

https://stackoverflow.com/questions/42672171/volume-is-not-shared-between-nodes-of-docker-swarm

Volumes created in docker swarm via default driver are local to the node. So if you put both containers on the same host they will have a shared volume. But when you put your containers on different nodes, there will be a separate volume created on each node.

Now in order to achieve bind mounts/volumes across multiple nodes you have these options:

Use a cluster filesystem like glusterfs, ceph and ... across swarm nodes, then use bind mounts in your service defenition pointing to shared fs.

Switch to Kubernetes and take advantage of automated volume provisioning using multiple backends via Storage classes and claims. http://storidge.com/blog/persistence-for-docker-swarm/

https://blog.octo.com/en/kubernetes-vs-swarm-volumes/

GlusterFS

http://embaby.com/blog/using-glusterfs-docker-swarm-cluster/