繁体   English   中英

docker 容器化和推送到 azure 容器注册表如何使用给定的命令工作?

[英]how does docker containerization and push to azure container registry work with given command?

我总是使用给定的测试命令将本地 docker 映像推送到 azure 容器注册表:

docker build . -t [registry location].azurecr.io/[project]:SNAPSHOT-1
docker tag [registry location].azurecr.io/[project]:SNAPSHOT-1 [registry location].azurecr.io/[project]:SNAPSHOT-1
docker push [registry location].azurecr.io/[project]:SNAPSHOT-1

当我这样做时,它会在我的本地以及 [registry location] -> [project] -> SNAPSHOT-1 的 azure 容器注册表中创建 docker 映像。

我从 docker 网站阅读了文档,但只需要澄清一下。 从 docker 它说:

当 URL 参数指向 Git 存储库的位置时,该存储库充当构建上下文。 系统递归地获取存储库及其子模块。 不保留提交历史记录。 首先将存储库拉入本地主机上的临时目录。 成功后,该目录将作为上下文发送到 Docker 守护进程。 本地副本使您能够使用本地用户凭据、VPN 等访问私有存储库。

因此,它使用 Git 存储库构建上下文(?)在我的本地 Docker 守护程序(?)中构建了一个图像,这就是我的理解。

docker tag是我不确定的标签。 它说:

docker 标签 SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

由于我有相同的 SOURCE_IMAGE 和 TARGET_IMAGE,这是什么意思? SOURCE_IMAGE 是我刚刚构建的本地(?) Docker 守护进程的图像吗? 为什么这是必要的?

最后,我有docker push...... 它是否在 azure 容器注册表 (acr) 中创建映像,因为我在......中定义了它,例如dev.azurecr.io/[project]:tag 我以为是我构建的 docker 映像。 它只是从 docker 图像标签(?)中知道将图像推送到 acr -> dev 作为标签名称吗?

如果这是愚蠢的问题,我很抱歉......我已经与 docker 和 acr 合作了一段时间,但我只知道它是如何工作的,但不明白它到底是什么意思。 有人可以用简单的方式向我解释每行命令吗? 对此,我真的非常感激!

嗯,首先你需要知道的是图像名称和图像标签。 通常,我们在没有容器注册表 URL 的情况下创建镜像,例如image_name:tag 实际上,这意味着您只能在本地计算机中管理图像。 当您想在另一台机器上拉取图像时,图像名称将更改为https://registry_url/image_name:tag 所以你知道,如果你想将图像推送到远程注册表,你需要像registry_url/image_name:tag这样标记图像。

当您构建 docker 镜像时,它会创建镜像的上下文并将其存储在本地计算机中,然后您将镜像推送到远程注册表,这意味着您将镜像上下文复制到远程注册表中。

最后,老实说,您不需要第二个命令。 第一个和第三个就够了。 第一个在本地机器中创建 docker 图像上下文,第三个将图像推送到 ACR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM