How to connect to a service in docker swarm with docker
It’s a rare case, suppose there is a myapp
swarm cluster with myapp_mongo
database without published port
and there is a need to run a command from some docker image with connection to this database.
By default docker stack deploy
creates a non-attachable network, so docker run --network myapp_default
will output
Error response from daemon: Could not attach to network myapp_default: rpc error: code = PermissionDenied desc = network myapp_default not manually attachable
.
A way to bypass it is to create a new attachable network and attach it to the service.
docker network create --driver overlay --attachable mongo_network
docker service update --network-add mongo_network myapp_mongo
docker run --rm --network mongo_network mongo:4.0.6 mongodump -h lsicloud_mongo ...
docker service update --network-rm mongo_network lsicloud_mongo
docker network rm mongo_network