4

I am trying to deploy a docker swarm using Digital Ocean's docker-machine driver.

This is currently a single node that contains several public DockerHub images, and one private.

I am having difficulties in configuring it to accept the private image properly.

I have SSHed into the node, and used docker login. After that, I was able to properly docker pull the private image.

But, when trying to run docker stack deploy -c myapp.yml myapp, I am getting this warning:

image me/myapp:latest could not be accessed on a registry to record
its digest. Each node will access me/myapp:latest independently,
possibly leading to different nodes running different versions of the image.

What do I need to do to properly login to a private registry in docker swarm mode?

2

You need the --with-registry-auth flag, e.g.:

docker stack deploy -c myapp.yml --with-registry-auth myapp

From the docker stack deploy --help output:

--with-registry-auth     Send registry authentication details to Swarm agents 
2
  • In case somebody wondered, the last arg is the swarm name (and not some authentication token or something); so more generically written the deployment takes form docker stack deploy -c docker-compose.yml --with-registry-auth my_swarm_name
    – P Marecki
    Jul 20 at 6:06
  • 1
    @PMarecki it's the stack name, same as you'd include in a deploy command without the flag. The --with-registry-auth flag takes no options, it passes you local credentials from previous login commands to the nodes running the containers.
    – BMitch
    Jul 20 at 11:03
0

first you need to do docker login to repo then you do stack deploy with --with-registry-auth flag.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.