可以在不同版本上重复使用 Docker 标签吗?

Possible to re-use Docker tags on different versions?

我构建、标记并发布了我的 Docker 图像到 Quay:

docker build -t myapp .
docker tag <imageId> quay.io/myorg/myapp:1.0.0-SNAPSHOT
docker login quay.io
docker push quay.io/myorg/myapp:1.0.0-SNAPSHOT

然后我通过 SSH 连接到 Linux 服务器和 运行:

sudo docker run -it -p 8080:80 -d --name myapp:1.0.0-SNAPSHOT quay.io/myorg/myapp:1.0.0-SNAPSHOT

它是一个 myapp 容器 运行 启动得很好。

我现在想推动一些更改以进行非本地测试(在同一个 Linux 服务器上),如果可能的话,我想重新使用相同的标签(1.0.0-SNAPSHOT).我可以重建、重新标记(使用相同的 1.0.0-SNAPSHOT 标记)并重新发布 myorg/myapp:1.0.0-SNAPSHOT 到 Quay,然后拉动 + 运行 它并让 Docker 获取更改?或者我需要到build/tag/publish一个1.0.1-SNAPSHOT(或类似的)新版本?

您可以在不同的构建版本上 re-use 标记。它与 latest 标签并没有什么不同(除了 latest 是默认的,如果你不提供标签)。主要问题是确保您提取实际的最新版本。由于各种原因,您的 Docker 客户端可能不会接收到遥控器已更改,因此如果想要 re-use 标记并确保您使用的是特定版本,您可以使用 sha256 哈希,例如, docker pull my/image@sha256:45b23dee08af5e43a7...

参见Docker docs here