您可以在构建自定义图像时设置图像名称,如下所示:
docker build -t dude/man:v2 . # Will be named dude/man:v2
有没有办法在 Dockerfile 中定义镜像的名称,所以我不必在 docker build
命令中提及它?
如何在不使用 yml 文件的情况下构建具有自定义名称的图像:
docker build -t image_name .
如何使用自定义名称运行容器:
docker run -d --name container_name image_name
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 服务器处理,该服务器在管道脚本中具有图像名称。
如果您必须引用特定的 docker 文件,这是另一个版本:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
然后你就跑
docker-compose build
使用特定的 Dockerfile,您可以尝试:
docker build --tag <Docker Image name> --file <specific Dockerfile> .
例如
docker build --tag second --file Dockerfile_Second .
如果您想在构建后为 docker 图像命名,只需再次构建它,但这次给它一个名称它工作得很好
docker build -t name_of_image .
Dockerfile
放置在与您的映像名称相同的目录中保持一致,则可以使用docker build -t $(basename $PWD) .
作为您的构建命令。然后,您可以使用“build”中的 CTRL-R 搜索来查找和重用该命令,而无需对其进行编辑。如果您愿意,也可以将其设为别名。