gvl*_*sov 244 tags docker dockerfile
您可以在构建自定义图像时设置图像名称,如下所示:
docker build -t dude/man:v2 . # Will be named dude/man:v2
Run Code Online (Sandbox Code Playgroud)
有没有办法在Dockerfile中定义图像的名称,所以我不必在docker build
命令中提及它?
sal*_*jad 260
如何使用自定义名称构建图像而不使用yml文件:
docker build -t image_name .
Run Code Online (Sandbox Code Playgroud)
如何运行具有自定义名称的容器:
docker run -d --name container_name image_name
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 213
Dockerfile中不支持标记图像.这需要在构建命令中完成.作为一种变通方法,您可以使用标识目标映像名称的docker-compose.yml进行构建,然后运行docker-compose build
.一个示例docker-compose.yml看起来像
version: '2'
services:
man:
build: .
image: dude/man:v2
Run Code Online (Sandbox Code Playgroud)
也就是说,由于无法使用swarm模式部署,因此推动使用compose进行构建.所以你回到运行命令,正如你在问题中给出的那样:
docker build -t dude/man:v2 .
Run Code Online (Sandbox Code Playgroud)
就个人而言,我倾向于在我的文件夹(build.sh)中使用一个小的shell脚本构建,该脚本传递任何args并包含图像的名称以保存键入.对于生产,构建由ci/cd服务器处理,该服务器在管道脚本中具有图像名称.
Dav*_*han 32
如果您必须引用特定的docker文件,这是另一个版本:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
Run Code Online (Sandbox Code Playgroud)
然后你就跑了
docker-compose build
Run Code Online (Sandbox Code Playgroud)
小智 18
我Dockerfile
唯一的解决方案是添加一个 shebang 行:
#!/usr/bin/env -S docker build . --tag=dude/man:v2 --network=host --file
FROM ubuntu:22.04
# ...
Run Code Online (Sandbox Code Playgroud)
然后chmod +x Dockerfile
就是./Dockerfile
走。我什至添加更多docker build
命令行参数,例如指定主机网络。
注意:env
支持-S/--split-string
仅适用于较新的 coreutils 版本。
使用特定的 Dockerfile,您可以尝试:
docker build --tag <Docker Image name> --file <specific Dockerfile> .
例如
docker build --tag second --file Dockerfile_Second .
归档时间: |
|
查看次数: |
233470 次 |
最近记录: |