【问题标题】:Missing tag after docker stack deploydocker stack deploy 后缺少标签
【发布时间】:2017-04-25 17:11:37
【问题描述】:

我正在研究新的docker stack deploy 命令以及新的docker compose v3,似乎docker stack deploy 几乎可以取代docker-compose up -d

我发现一个不同的地方很奇怪,那就是正在运行的容器显示图像名称而不是标签。

检查撰写

这是在通过docker-compose up -d 创建的容器上运行检查的片段。

{
    Command: "node server.js",
    Image: "styfle/notification-service:v1.0.0"
}

检查堆栈部署

这是在通过docker stack deploy -c docker-compose.yml --with-registry-auth=true tst 创建的容器上运行检查的片段。

{
    Command: "node server.js",
    Image: "styfle/notification-service@sha256:827e6a274c5ee2b941dde402f82069c2da644927cac53c0b2cd5acacb739f949"
}

为什么Image 中缺少标签(在本例中为后缀:v1.0.0),并且可以在其他地方找到它吗?我正在使用 Docker CE 17.03.1-ce-win5 (10743)。

【问题讨论】:

    标签: docker deployment docker-compose


    【解决方案1】:

    Docker 服务使用图像固定来确保 swarm 中的每个节点都运行相同的图像。如果标签被替换,或者在不同节点上处于不同状态,sha256 摘要将确保仅使用您在创建服务时拥有的 v1.0.0 版本。详情请见docker's documentation on the subject

    【讨论】:

    • 感谢您的链接。看起来这可能是bug,因为 sha256 摘要是必要的,但标签名称应该仍然存在于哈希之前,对吧?
    • 不行,摘要替换标签,标签可以改变,摘要是固定的。
    • 所以我的问题的第二部分是可以在其他地方检索标签吗?
    • 我想不出可靠的解决方案。您可以获取该图像参考的 repo 标签列表,但可以有多个标签,并且它们可以在您提交后更改,以便当前没有任何标签指向它:docker inspect -f '{{.RepoTags}}' $image
    猜你喜欢
    • 2018-09-10
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2015-10-12
    相关资源
    最近更新 更多