如何在 Dockerfile 中设置镜像名称?
Posted
技术标签:
【中文标题】如何在 Dockerfile 中设置镜像名称?【英文标题】:How to set image name in Dockerfile? 【发布时间】:2016-12-23 11:41:39 【问题描述】:您可以在构建自定义图像时设置图像名称,如下所示:
docker build -t dude/man:v2 . # Will be named dude/man:v2
有没有办法在Dockerfile中定义镜像的名字,这样docker build
命令中就不用提了?
【问题讨论】:
对于任何好奇的人,使用FROM... AS name 不起作用 【参考方案1】:如何在不使用 yml 文件的情况下构建具有自定义名称的图像:
docker build -t image_name .
如何使用自定义名称运行容器:
docker run -d --name container_name image_name
【讨论】:
我不打算进一步评论,但问题是“如何在 Dockerfile 中设置图像名称?”不是“如何设置泊坞窗图像名称?”这个答案就在问题本身中。 我已经回过头来过几次了,这个答案有帮助,尽管在技术上是题外话 如果您在将Dockerfile
放在与您想要的图像名称相同的目录中保持一致,您可以使用docker build -t $(basename $PWD) .
作为您的构建命令。然后,您可以使用“build”中的 CTRL-R 搜索来查找和重用该命令,而无需对其进行编辑。如果您愿意,也可以将其设为别名。
感谢您的回答。我花了几个小时通过互联网得到这个。我无法得到正确的答案,如果一个为他的形象命名的人如果他也需要为他的容器命名,那么他就不能走得更远。【参考方案2】:
Dockerfile 中不支持对图像进行标记。这需要在您的构建命令中完成。作为一种解决方法,您可以使用标识目标映像名称的 docker-compose.yml 进行构建,然后运行 docker-compose build
。一个示例 docker-compose.yml 看起来像
version: '2'
services:
man:
build: .
image: dude/man:v2
也就是说,有人反对使用 compose 进行构建,因为它不适用于 swarm 模式部署。所以你又回到了你在问题中给出的运行命令:
docker build -t dude/man:v2 .
就我个人而言,我倾向于在我的文件夹 (build.sh) 中使用一个小的 shell 脚本来构建,它传递任何参数并在其中包含图像的名称以节省输入。对于生产,构建由 ci/cd 服务器处理,该服务器在管道脚本中具有图像名称。
【讨论】:
【参考方案3】:如果您必须引用特定的 docker 文件,这里是另一个版本:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
然后你就运行
docker-compose build
【讨论】:
我喜欢这个答案显示了 container_name 和 image name:tag 之间的区别。如果对发生的事情有更多解释:“container_name”命名最终从图像中旋转出来的容器。 "image" 命名和标记创建的图像,容器从中构建。正如其他人所提到的,不能像 OP 所要求的那样从 Dockerfile 中指定图像名称,因此我们使用 docker-compose.yml 文件代替,并使用“docker-compose up -d --build”【参考方案4】:如果您想在构建 docker 镜像后为其命名 只是重新构建它,但这次给它一个名字 效果很好
docker build -t name_of_image .
【讨论】:
嘿,不仅已经提供了相同的答案,而且与问题无关。作者甚至说他们正在这样做。【参考方案5】:使用container custom name
构建映像的命令行。
docker build --name name_of_image .
【讨论】:
以上是关于如何在 Dockerfile 中设置镜像名称?的主要内容,如果未能解决你的问题,请参考以下文章