我是新来的码头和跟随入门教程。在第七步,上面写着
键入
docker images命令并按回车。该命令列出本地系统上的所有图像。您应该在列表中看到docker/whalesay。 $ docker映像库标记映像ID 3小时前创建了虚拟大小坞/whalesay最新fb434121fc77 247MB hello-世界最新91c95931e552周前910B
但是第一列清楚地写着“存储库”,而不是“图像名称”。我还在其他人的机器上注意到,因为一个图像可以有多个标记,这个列表通常包含重复的条目--每个标记一个。那么,这是一个图像列表,一个存储库列表,一个图像标记组合列表还是其他什么?图像和存储库之间有什么区别?
而且,考虑到图像和存储库是不同的,我如何才能列出我的存储库呢?
这与容器无关。
发布于 2015-06-29 12:35:42
引用自正式码头文件:
存储库可能包含图像的多个变体。
(见:https://docs.docker.com/userguide/dockerimages)
--这意味着: Docker映像可以属于存储库,例如当它被推送到Docker注册中心(与docker push my/reporitory:version1一起)时。另一方面,存储库包含图像的多个版本(=不同的标记)。因此,当您构建映像的新版本时,您可以给它一个标记(docker tag 518a41981a6a my/reporitory:version2),并将其作为下一个版本(docker push my/reporitory:version2)推送到存储库。
下面是Docker文档中的一个示例(请参阅上面的链接)。如您所见,它显示了一个名为ouruser/sinatra的存储库,它包含相同映像的各种版本(latest、devel、v2):
$ docker images ouruser/sinatra
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB在您的示例中,您有两个存储库(docker/whalesay和hello-world),它们只包含一个标记图像(称为latest,这意味着实际上没有标记,并显示了最新的图像)。
发布于 2018-08-09 17:38:01
这里最容易定义几个术语,因为它们都是相互关联的:
图像:这是用于以运行容器的方式打包应用程序的文件系统层和元数据。每个图像必须在码头引擎上有一个ID。
Reference:这是指向图像的指针。有不同类型的引用,或者仅仅是图像ID,通常它是一个存储库和标记,有时您将使用sha256散列而不是可变的标记将特定的校验和插入到特定的校验和中。重要的是您可以有多个指向同一图像的指针,并且不需要对图像ID以外的图像有任何引用。当您删除引用时,除非是指向该图像ID的最后一个指针,否则停靠者将只删除该指针。
注册表:这是一个保存图像的服务器。类似于Git服务器保存源代码的方式,或者二进制文件的工件服务器,注册表是将图像推送和拉出的地方。
存储库:注册服务器上图像目录的路径是存储库。这包括注册表主机名和端口,如果您没有使用默认的Docker注册表。在图像引用中,这个存储库是最终冒号和标记之前的部分。
标记:存储库中的特定映像。如果您没有指定标签,停靠者将默认为标签名“最新”。这是最后冒号之后的部分,通常用于版本号。
举个例子,参考:
registry-server:5000/team/service-a:build-42与其他系统不同,在这些系统中,您推送和拉到服务器,然后指定要发送到那里的文件,推送和从注册表服务器中提取对接者图像,使用包含该名称的存储库和标记的引用来定义映像的目标和源。因此,要将图像推送到不同的位置,您可以使用新的存储库和标记创建一个新的引用(使用docker tag命令),然后对该引用运行push命令。
通常,当有人引用一个“图像名”时,他们指的是存储库名称(如果您想单独指定一个标记),或者是一个可以用来拉出或推送图像的完整引用。
我怎么能列出我的存储库呢?
docker image ls --format '{{.Repository}}' | sort -u我包括了sort -u到dup输出,因为您可能有多个图像,具有相同的存储库和不同的标记。
发布于 2017-05-30 23:30:14
图片是通过使用给定的Dockerfile运行docker build来生成的,并由它们的ID来标识。
存储库和标记只是在有意义的层次结构/体系结构中命名和组织映像的方法。
这就是答案中的以下内容详细解释了docker images输出(这可能是他们应该放在文档中的内容):
docker build命令的docker build标志,或者来自现有图像的docker tag-ing。您可以使用对您有意义的命名来标记图像,但是要知道,停靠者将使用标记作为docker push或docker pull中的注册表位置。[REGISTRYHOST/][USERNAME/]NAME[:TAG]。对于上面的ubuntu,REGISTRYHOST被推断为registry.hub.docker.com。因此,如果计划将名为my-application的图像存储在docker.example.com的注册表中,则应该标记该图像docker.example.com/my-application。https://stackoverflow.com/questions/31115098
复制相似问题