2016-06-14 100 views
3

可以通过docker build命令轻松构建docker镜像。Docker构建标记存储库名称

我想知道的是你在建立图像时可以给的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 

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

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

谢谢你的帮忙!

+0

这不是一个编程问题。尝试询问ServerFault。 – BadZen

+0

对不起:(。需要问那里mm .. –

回答

8

我相信这里的混乱是“储存库”这个词。在Docker中,存储库是具有相同名称的图像的任何版本组,并且可能具有多个标签。 “注册表”服务器,如hub.docker.com或你自己的私人注册表,拥有多个存储库,例如, redis repository on the public registry。该存储库具有用于不同版本的构建的多个标签。

所以有了这样的背景,为您解答:

  1. ouruser /西纳特拉位于当地码头工人的主机上,直到你做一个docker push
  2. 没有,仓库和标签的名称图片。
  3. 虽然您的系统是本地的,但您可以在本地使用此映像。一旦你把它推到注册表中,你就可以把它放到任何其他有权访问该注册表的Docker主机上。如果您执行docker save,则可以在另一主机上将该图像保存为docker load
  4. 我确定在docs.docker.com某处有文档覆盖这个地方,但是我从一个类学到了东西。
  5. 用户名/图片库格式即将支持在hub.docker.com中推送到您自己的名称空间。如果没有这些,那么创造第一个“Redis”形象的人称它为“redis”,而下一个人创建自己的名为“redis-improved”的存储库,并且我们很快陷入混乱的名字混乱中,不清楚谁做出了什么,做了什么是一个有信誉的形象。对于您在本地制作的图像,该命名不是必需的,但由于您从Hub.docker.com提取的图像可能缺少用户名(如果它们由Docker自己维护),所以仍然受到鼓励。没有你的用户名,你不会知道你拉下了哪些图片,以及你自己创建了哪些图片。
+0

这是值得加入5)类似的'服务器[:端口] /回购:标签'用于[图像被推送到私人注册表](https:///docs.docker.com/engine/reference/commandline/tag/#tag-an-image-for-a-private-repository)。例如:'192.168.1.1:5000/my-image:v3' – TemporalWolf