docker堆栈部署结果在“没有这样的图像错误”

我正在使用docker swarm,并想用docker-compose部署一个服务。 我的服务使用名为myuser/myrepo:mytag的自定义映像,将我成功部署到Docker-Hub的私有存储库。

我的docker写作看起来像这样:

 version: "3.3" services: myservice: image: myuser/myrepo:mytag ports: - "8080:8080" 

在执行之前,我用下面的方法成功的将图像docker pull myuser/myrepo:mytag

当我运行docker stack deploy -c docker-compose.yml myapp我总是收到错误: "No such image: myuser/myrepo:mytag"

有趣的是,只运行相同的文件: docker-compose up (即没有群模式)一切正常,服务启动。

我真的不明白为什么这是失败的? 我已经试图用docker system prune ,然后重新打印我的形象,没有成功。

已经find了解决办法。 我的图像托pipe在私人存储库上。 除了swarm manager(我执行命令的地方)之外,我还有一个正在运行的swarm worker。

当我运行docker stack deploy -c docker-compose.yml myapp将服务部署到工作者节点(不像我想的那样是pipe理节点)。 在worker节点上,docker没有从私有存储库中提取映像的凭据。 因此,要解决这个问题,要么传递标志--with-registry-auth (将存储库的凭据推送到工作节点),要么确保将服务部署到映像所在的节点。

请参阅: https : //docs.docker.com/engine/reference/commandline/deploy/