docker堆栈部署后缺少标记

docker堆栈部署后缺少标记,docker,deployment,docker-compose,Docker,Deployment,Docker Compose,我正在研究新命令之外的新命令,它似乎几乎可以取代docker-compose-d { Command: "node server.js", Image: "styfle/notification-service:v1.0.0" } 我发现的一个不同之处很奇怪,那就是运行的容器显示图像名称,但不显示标记 检阅整理 这是通过docker compose up-d创建的容器上运行inspect的片段 { Command: "node server.js", Image

我正在研究新命令之外的新命令,它似乎几乎可以取代
docker-compose-d

{
    Command: "node server.js",
    Image: "styfle/notification-service:v1.0.0"
}
我发现的一个不同之处很奇怪,那就是运行的容器显示图像名称,但不显示标记

检阅整理 这是通过
docker compose up-d
创建的容器上运行inspect的片段

{
    Command: "node server.js",
    Image: "styfle/notification-service:v1.0.0"
}
检查堆栈部署 这是在容器上运行inspect的一个片段,该容器是通过
docker stack deploy-c docker-compose.yml--注册表auth=true tst
创建的

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

为什么标签(在本例中,后缀
:v1.0.0
)从
图像中丢失,并且可以在其他地方找到?我正在使用Docker CE 17.03.1-CE-win5(10743)。

Docker服务使用映像固定来确保群中的每个节点都运行相同的映像。如果标签被替换,或者在不同的节点上处于不同的状态,sha256摘要将确保仅使用创建服务时使用的v1.0.0版本。有关更多详细信息,请参阅。

谢谢您的链接。看起来这可能是一个问题,因为sha256摘要是必需的,但是标记名应该在哈希之前就存在,对吗?不,摘要替换了标记,标记可以更改,摘要是固定的。所以我问题的第二部分是标记可以在其他地方检索吗?我想不出可靠的解决方案。您可以获取该图像引用的repo标记列表,但是可以有多个标记,并且在提交后它们可以更改,以便当前没有任何标记指向它:
docker inspect-f'{.RepoTags}}'$image