Docker --tag vs --name澄清

时间:2017-01-07 10:52:25

标签: docker

我对docker很新,我对标记(--tag)图像和为其指定名称(--name)之间的区别感到有些困惑。 例如,我可以看到,如果我从Docker文件构建自定义图像,我可以使用名称标记它:

sudo docker build --tag=tomcat-admin .
sudo docker run -it tomcat-admin

将名称传递给docker inspect会产生一个结果:

docker inspect tomcat-admin

但是它不包含“命名”图像的相同属性:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' tomcat-admin

Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings

有人对此有所了解吗? 谢谢!

3 个答案:

答案 0 :(得分:24)

我认为你在这里混合了两个概念,这引起了混乱。一方面,有一个Docker镜像,您可以将其视为启动容器的蓝图。另一方面,有些容器正在运行基于图像的实例。

当您docker build -t tagname .创建图像并通常使用“name:tag”格式标记它时。例如,您正在构建图像

docker build -t myimage:1.0 .

使用版本 1.0 创建名为 myimage 的新图像。这是您在运行docker images时将看到的内容。

当您根据图像创建和启动新容器时,将使用--name参数。例如,您使用以下命令运行新容器:

docker run -it --name mycontainerinstance myimage

这会根据您的图片 myimage 创建一个新容器。此容器实例名为 mycontainerinstance 。您可以在运行docker ps -a时看到此信息,该列表将列出容器名称为 mycontainerinstance 的容器。

为了更好地理解差异,请查看building an imagerunning a containerspecifying an image的文档。阅读文档时,您会注意到哪些命令以图像为目标,哪些命令用于容器。您还将看到,有些命令适用于像docker inspect这样的图像和容器。

当然,只有在提供容器名称而不是图像时才检查网络地址。在您的特殊情况下,容器会生成一个生成的名称,您可以通过运行docker ps -a来查看该名称。当您为docker inspect命令提供此名称时,您可能会看到所需的IP地址。

答案 1 :(得分:9)

您标记图片

docker build --tag=tomcat-admin .

但是您为容器指定了名称

docker run -it tomcat-admin

您可以为图像指定多个标签,例如

docker build --tag=tomcat-admin --tag=tomcat-admin:1.0 .

如果您列出图像,则每个标记会获得一行,但它们与相同的图像ID相关:

docker images |grep tomcat

tomcat-admin                                    1.0                 955395353827        11 minutes ago      188 MB
tomcat-admin                                    latest              955395353827        11 minutes ago      188 MB

您也可以再次标记图像,而不仅仅是在构建图像时,这样您就可以保留不同的图像版本。

当您根据特定图像运行容器时,可以为其指定名称,因此您可以使用名称而不是使用containerId来引用它。

显然,通过检查图像和容器可以获得不同的属性。如果你对图片标签和容器名称使用不同的名称,我认为会更清楚,例如

docker build --tag=tomcat-admin .
docker run -d -ti --name=tomcat-admin-container tomcat-admin

docker inspect tomcat-admin              ==> You inspect the image
docker inspect tomcat-admin-container    ==> You inspect the container

答案 2 :(得分:2)

令人困惑的是,标签由名称和标签组成。在文档中,您可以看到:

--tag , -t Name and optionally a tag in the ‘name:tag’ format

因此,如果省略:tag部分,则实际上为图像添加了名称。就是这样。

图片名称和容器名称之间的差异在其他答案中得到了解释。

相关问题