如何在 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 中设置镜像名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Dockerfile 中设置 Node 环境变量以运行 node.js 应用程序?

Dockerfile

dockerfile关键字

dockerfile保留字指令

在 Dockerfile 中设置 MySQL 并导入转储

docker入门-Dockerfile入门