Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

docker stack deploy results in "No such image error"

I am using docker swarm and would like to deploy a service with docker-compose. My service uses a custom image called myuser/myrepo:mytag that I successfully deploy to Docker-Hub to a private repository.

My docker-compose looks like this:

version: "3.3"

services:

  myservice:
    image: myuser/myrepo:mytag
    ports:
      - "8080:8080"

Before executing, I successfully pulled the image with: docker pull myuser/myrepo:mytag

When I run docker stack deploy -c docker-compose.yml myapp I always receive the error: "No such image: myuser/myrepo:mytag".

Interestingly, running the same file using only: docker-compose up (i.e. without swarm mode) everything works fine and the service starts up.

I really don't understand why this is failing? I've already tried cleaning up docker with docker system prune and then repull my image, no success.

like image 916
user2350644 Avatar asked Nov 24 '17 09:11

user2350644


2 Answers

Already found the solution. My image is hosted on a private repository. Besides the swarm manager (where I executed the commands), I had a running swarm worker.

When I ran docker stack deploy -c docker-compose.yml myapp docker deployed the service to the worker node (not the manager node as I thought). At the worker node, docker had no credentials to pull the image from the private repository. Hence, to fix this either pass the flag --with-registry-auth (which pushes the credentials for the repository to the worker node) or make sure that the service is deployed to a node where the image is present.

See: https://docs.docker.com/engine/reference/commandline/deploy/

like image 111
user2350644 Avatar answered Nov 03 '22 13:11

user2350644


I want to add another scenario that leads to the same outcome (error message) so that people won't bang their heads against the wall.

Another possibility is that you are trying to deploy the image with the insecure registry but forget to edit daemon.json on the server pulling the image.

If that is the case, lets this answer act as a reminder; and save you some time.

like image 24
Curious Sam Avatar answered Nov 03 '22 14:11

Curious Sam