Docker构build标签库名称

可以通过docker build命令轻松构builddocker镜像。

我想知道的是在build立图像时你可以给的t标志。 例如:

$ docker build -t ouruser/sinatra:v2 . 

根据文档,t标志是用于标记和命名的目的。 名称是':'之前的部分,标签是之后的部分。 所以在我们的例子中,名字是ouruser / sinatra,标签是v2。

我认为这将是图像的名称和标签。 但显然,名称实际上是一些存储库名称? 为什么我认为这是? 那么,因为如果你之后会用命令列出图像:

 docker images 

你会得到这样的列表:

 REPOSITORY TAG IMAGE ID CREATED SIZE ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 M 

砰! 重大的冲击! 你以为你正在创build一个名称的图像,而是指定了一些存储库! 与此相关,我有一些问题:

  1. 这个存储库位于何处?
  2. 我可以在不创build存储库的情况下命名图像?
  3. 这个资源库在哪里以及如何使用,或者可以使用?
  4. 我在哪里可以find关于这个仓库的更多信息? 我只发现了这一点,并没有说实话: docker build docs
  5. 为什么使用由两部分组成的名称是常见的:somename / someothername?

感谢您的帮助!

我相信这里的困惑是“储存库”这个词。 在Docker中,存储库是具有相同名称的图像的任何一组版本,并且可能具有多个标签。 一个“registry”服务器,如hub.docker.com或您自己的私有registry,拥有多个存储库,例如公有registry上的redis存储库 。 该存储库具有用于不同版本的构build的多个标签。

所以在这个背景下,回答你的问题:

  1. ouruser / sinatra位于您的本地Docker主机上,直到您执行docker push
  2. 不,仓库和标签是图像的名称。
  3. 在本地系统上,您可以在本地使用此映像。 一旦你把它推到一个registry中,你就可以把它放到任何其他可以访问该registry的Docker主机上。 如果你做一个docker save你可以保存该图像的docker load另一个主机。
  4. 我确信docs.docker.com上的文档覆盖了这个地方,但是我从一门课中学到了东西。
  5. 用户名/图片库格式即将支持在hub.docker.com中推送到您自己的名称空间。 如果没有这些,那么第一个创build“Redis”形象的人会称之为“redis”,而下一个人创build自己的名为“redis-improved”的仓库,而我们很快就会混淆不清的名字,是一个有信誉的形象。 对于您在本地制作的图像来说,命名不是必需的,但仍然鼓励您使用,因为您从Hub.docker.com提取的图像可能缺less用户名(如果由Docker自己维护)。 没有你的用户名,你不会知道你拉下了哪些图片,以及你自己创build了哪些图片。