我对docker很陌生,我对标记(--tag)图像和为其指定名称(--name)之间的区别感到有些困惑.例如,我可以看到,如果我从Docker文件构建自定义图像,我可以使用名称标记它:
sudo docker build --tag=tomcat-admin .
sudo docker run -it tomcat-admin
Run Code Online (Sandbox Code Playgroud)
将名称传递给docker inspect会产生一个结果:
docker inspect tomcat-admin
Run Code Online (Sandbox Code Playgroud)
但是它不包含"命名"图像的相同属性:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' tomcat-admin
Template parsing error: template: :1:19: executing "" at <.NetworkSettings.IPA...>: map has no entry for key "NetworkSettings
Run Code Online (Sandbox Code Playgroud)
"
有人对此有所了解吗?谢谢!
And*_*gle 33
我认为你在这里混合了两个概念,这引起了混乱.一方面,有一个Docker镜像,您可以将其视为启动容器的蓝图.另一方面,存在运行基于图像的实例的容器.
当您docker build -t tagname .创建图像并通常使用"name:tag"格式标记它时.例如,您正在构建图像
docker build -t myimage:1.0 .
Run Code Online (Sandbox Code Playgroud)
它创建了一个新的形象命名 MYIMAGE有一个版本的1.0.这是你在跑步时会看到的docker images.
--name然后,在根据图像创建和启动新容器时,将使用该参数.例如,您使用以下命令运行新容器:
docker run -it --name mycontainerinstance myimage
Run Code Online (Sandbox Code Playgroud)
这将根据您的图像myimage创建一个新容器.此容器实例名为mycontainerinstance.您可以在运行时看到这个docker ps -a,它将列出容器名为mycontainerinstance的容器.
因此,为了更好地理解差异,请查看用于构建图像和运行容器的文档,指定图像.阅读文档时,您会注意到哪些命令以图像为目标,哪些命令用于容器.您还将看到,有一些命令可用于图像和容器,例如docker inspect.
当然,只有在提供容器名称而不是图像时才检查网络地址.在您的特殊情况下,容器有一个生成的名称,您可以通过运行查看docker ps -a.当您为docker inspect命令提供此名称时,您可能会看到所需的IP地址.
sek*_*ett 12
令人困惑的是标签由名称和标签组成。在文档中,您可以看到:
--tag , -t Name and optionally a tag in the ‘name:tag’ format
因此,如果省略该:tag部分,实际上是为图像添加了名称。就是这样。
其他人的答案中解释了图像名称和容器名称之间的区别。
gil*_*ile 11
您标记图像
docker build --tag=tomcat-admin .
Run Code Online (Sandbox Code Playgroud)
但是您为容器指定了名称
docker run -it tomcat-admin
Run Code Online (Sandbox Code Playgroud)
您可以为图像分配多个标签,例如
docker build --tag=tomcat-admin --tag=tomcat-admin:1.0 .
Run Code Online (Sandbox Code Playgroud)
如果列出图像,则每个标记会获得一行,但它们与相同的图像ID相关:
docker images |grep tomcat
tomcat-admin 1.0 955395353827 11 minutes ago 188 MB
tomcat-admin latest 955395353827 11 minutes ago 188 MB
Run Code Online (Sandbox Code Playgroud)
您也可以第二次标记图像,而不仅仅是在构建图像时,这样您就可以保留不同的图像版本.
当您基于特定图像运行容器时,可以为其指定名称,因此您可以使用名称而不是使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3977 次 |
| 最近记录: |