如何恢复我在 hub.docker.com 上的最后一次推送?
How can I revert my last push on hub.docker.com?
我在 hub.docker.com 上推送并覆盖了错误的 docker 图像,损坏了我的工作 docker 图像。我怎样才能恢复上次推送?
据我所知没有还原选项。如果您在某处有一份完好的图像副本,您可以将其重新推送到注册表。为避免将来出现此问题,请执行以下一个或多个步骤:
- 避免使用最新的标签,并为每个构建赋予一个唯一的标签。
- 将可重现的构建过程与保存在版本控制中的 Dockerfile 一起使用,该版本控制对所有依赖项使用特定版本。这允许您检查 Dockerfile 的先前状态以重新运行先前的构建。
- 为您的图像和您对其他图像的任何依赖关系维护您自己的私有注册表。确保维护这些依赖项(定期更新)并备份您的注册表。
您可以使用 docker 中心中的高级图像管理页面来复制好图像的摘要,将其拉到您的系统,覆盖标签,然后推回。使用这些命令:
docker image pull myname/example@sha256:1234
docker tag myname/example@sha256:1234 myname/example:mytag
docker push myname/example:mytag
假设 myname/example@sha256:1234
是您从 docker 集线器复制的好图像的摘要,myname/example:mytag
是您要将图像标记为的内容。
我在 hub.docker.com 上推送并覆盖了错误的 docker 图像,损坏了我的工作 docker 图像。我怎样才能恢复上次推送?
据我所知没有还原选项。如果您在某处有一份完好的图像副本,您可以将其重新推送到注册表。为避免将来出现此问题,请执行以下一个或多个步骤:
- 避免使用最新的标签,并为每个构建赋予一个唯一的标签。
- 将可重现的构建过程与保存在版本控制中的 Dockerfile 一起使用,该版本控制对所有依赖项使用特定版本。这允许您检查 Dockerfile 的先前状态以重新运行先前的构建。
- 为您的图像和您对其他图像的任何依赖关系维护您自己的私有注册表。确保维护这些依赖项(定期更新)并备份您的注册表。
您可以使用 docker 中心中的高级图像管理页面来复制好图像的摘要,将其拉到您的系统,覆盖标签,然后推回。使用这些命令:
docker image pull myname/example@sha256:1234
docker tag myname/example@sha256:1234 myname/example:mytag
docker push myname/example:mytag
假设 myname/example@sha256:1234
是您从 docker 集线器复制的好图像的摘要,myname/example:mytag
是您要将图像标记为的内容。