【问题标题】:How to use docker deploy in docker-compose 3?如何在 docker-compose 3 中使用 docker deploy?
【发布时间】:2017-06-05 13:10:17
【问题描述】:

当我发出命令sudo docker stack deploy -c docker-compose.yml test

Ignoring unsupported options: build, external_links, links, restart

Updating service test_cache (id: me2vh1lffrl4ppzomphin167la)
Updating service test_lb (id: ycnne1ifpt517wdbfdg1g5tlup)
Updating service test_media (id: rr3ural9hjz0mw6hjx7n2vywm)
Creating service test_web

Error response from daemon: rpc error: code = 3 desc = ContainerSpec: image reference must be provided

我收到此错误 - 来自守护程序的错误响应:rpc 错误:代码 = 3 desc = ContainerSpec:必须提供图像参考

但是我为这个容器创建了图像。

【问题讨论】:

  • 请附上您的docker-compose.yml 以获得更详细的答案。

标签: image docker containers


【解决方案1】:

您的 compose.yml 文件不包含 docker stack deploy 所需的图像部分。如果要将这些映像部署到 swarm,您还应该将这些映像推送到注册表服务器,因为 docker 使用固定到注册表中映像的 sha256 来确保所有节点运行相同的映像。并且由于 swarm 不构建镜像,任何本地没有包含镜像的节点都将无法运行这个镜像,除非它是从注册表中提取的。

【讨论】:

  • 我在 docker 上注册了。然后我使用命令docker login 登录 docker 帐户并编写 ``` sudo docker push test ``` 我又收到一个错误 - denied: requested access to the resource is denied
  • 推送到 docker hub 要求您的图像以您的登录 ID 作为前缀命名:login_id/image_name。您可以使用docker tag test:latest login_id/image_name:latest 重新标记现有图像。
  • 它似乎有效。现在我可以使用命令 sudo docker stack deploy -c docker-compose.yml login_id/image_name 进行部署?
  • 是的。如果您的注册表是私有的,您还需要包含 --with-registry-auth
  • 看来您已经解决了第一个错误。我建议使用新错误打开一个新问题,并确保在其中包含 yml 文件的内容。有关提问的更多详细信息,请参阅帮助部分,尤其是 mcve 部分。
【解决方案2】:

这有点晚了,但我想说当我在docker-compose.yml 文件中有评论时收到此错误,如下所示:

version: "3"
services:
  web:
    # pull the image from repository
    image: myname/docker-private:testproj
    ...

但是,注释需要从行的第一个字符开始:

version: "3"
services:
  web:
# pull the image from repository
    image: myname/docker-private:testproj
    ...

这解决了问题。

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 2022-11-13
    • 2019-09-08
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多