2

我正在尝试构建一个多架构映像,但希望避免将其推送到 docker hub。我在找出如何控制导出选项时遇到了很多麻烦。有没有办法让“--push”推送到我选择的注册表?

任何帮助表示赞赏

4

1 回答 1

0

Docker 为您甚至可以在 localhost 上自行运行的注册表服务器提供容器映像,请参阅:部署注册表服务器

还有其他实现注册表 API 的服务器|服务(见下文),但这是一个很好的起点。

按照惯例,推送/拉取的镜像默认到 Docker 注册表;除非明确指定注册表,否则图像your-image:your-tag默认为docker.io/my-image:my-tag. 在我看来,始终包含此默认值以对此更加透明是一个好习惯。

如果您在 localhost 上的默认端口 5000 上运行 Docker 的注册表映像,则需要使用您的映像localhost:5000/your-image:your-tag以确保当您使用时docker push localhost:5000/your-image:your-tag,CLI 能够确定您的本地注册表是预期的目标。

类似地,如果您使用例如Quay注册表,图像必须是前缀quay.ioGoogle Artifact Registry,图像是前缀${REGION}-docker.pkg.dev/${PROJECT}/${REPOSITORY}等。

IIRC 在没有帐户的情况下无法推送到 Docker 的注册表(又名 dockerhub),因此,只要您确保没有登录,就不应意外将图像推送到 Docker 的注册表。

注意您只需要使用注册表来简化容器映像在机器之间的分发。如果您只对本地(主机)开发感兴趣,您可以docker run ...在成功后立即docker build无需任何推拉(除了临时图像,例如FROM)。

于 2021-11-20T00:01:24.393 回答