docker命令

docker build 是用于从 Dockerfile 构建 Docker 镜像的核心命令,通过读取 Dockerfile 中的指令,逐步构建出可运行的镜像。以下是其详细用法、参数说明及示例:

一、基本语法

bash 复制代码
docker build [OPTIONS] PATH | URL | -
  • PATH:Dockerfile 所在的本地目录路径(最常用);
  • URL :远程 Git 仓库地址(如 https://github.com/example/project.git);
  • - :从标准输入(stdin)读取 Dockerfile 内容(较少用)。

二、常用参数(OPTIONS)

参数 作用说明
-t, --tag 为镜像指定名称和标签(格式:名称:标签,标签默认 latest
-f, --file 指定非默认名称的 Dockerfile(默认找当前目录的 Dockerfile 文件)
--build-arg 传递构建时变量(配合 Dockerfile 中的 ARG 指令使用)
--no-cache 构建时不使用缓存(强制重新执行所有步骤,解决缓存导致的依赖更新问题)
--pull 总是尝试拉取基础镜像的最新版本(避免使用本地旧版本基础镜像)
-q, --quiet 静默模式,只输出最终的镜像 ID,不显示构建过程

三、示例场景

1. 基础用法:从当前目录构建镜像

假设当前目录有 Dockerfile,构建并命名为 myapp:v1

bash 复制代码
# 格式:docker build -t 镜像名:标签 目录路径(. 表示当前目录)
docker build -t myapp:v1 .
2. 指定非默认名称的 Dockerfile

若 Dockerfile 名为 Dockerfile.prod(非默认 Dockerfile):

bash 复制代码
# -f 指定 Dockerfile 路径
docker build -t myapp:prod -f Dockerfile.prod .
3. 传递构建时变量(--build-arg)

配合 Dockerfile 中的 ARG 指令使用,动态传入参数(如版本号):

Dockerfile 中定义 ARG

dockerfile 复制代码
ARG APP_VERSION=1.0  # 定义变量,默认值 1.0
FROM openjdk:8-jdk-alpine
COPY app-${APP_VERSION}.jar app.jar  # 使用变量

构建时传递变量

bash 复制代码
# --build-arg 覆盖默认的 APP_VERSION
docker build -t myapp:v2 --build-arg APP_VERSION=2.0 .
4. 强制不使用缓存(--no-cache)

当 Dockerfile 或依赖文件更新后,缓存可能导致构建结果不符合预期,需强制重新构建:

bash 复制代码
docker build -t myapp:v3 --no-cache .
5. 从远程 Git 仓库构建

直接从 GitHub/GitLab 仓库构建(Docker 会自动克隆仓库并找根目录的 Dockerfile):

bash 复制代码
# 从 GitHub 仓库构建
docker build -t github-app:latest https://github.com/example/springboot-demo.git
6. 静默模式构建(-q)

只输出最终的镜像 ID,适合脚本中获取镜像标识:

bash 复制代码
# 构建并获取镜像 ID
IMAGE_ID=$(docker build -q -t myapp:v4 .)
echo "构建完成,镜像 ID:$IMAGE_ID"

四、构建上下文(Context)

docker build 后面的 PATH(如 .)称为构建上下文,表示 Docker 引擎可访问的文件范围:

  • 构建时,Docker 会将上下文目录下的所有文件发送到 Docker 引擎(因此上下文目录不应包含无关文件,避免传输缓慢);

  • 建议:在上下文目录中创建 .dockerignore 文件,排除不需要的文件(如 node_modules.git),示例:

    bash 复制代码
    # .dockerignore 内容
    node_modules/
    .git/
    *.log

五、常见错误及解决

  1. unauthorized: authentication required

    需登录 Docker 仓库(如 Docker Hub):docker login

  2. no such file or directory

    检查 Dockerfile 中的 COPY/ADD 路径是否正确,确保文件在构建上下文内。

  3. 缓存导致依赖未更新

    使用 --no-cache 强制重新构建,或修改 Dockerfile 中对应步骤的指令(如添加注释)使缓存失效。

docker build 是构建镜像的核心命令,常用场景:

  • 基础构建:docker build -t 名称:标签 .
  • 定制 Dockerfile 路径:-f 参数
  • 动态传参:--build-arg
  • 清除缓存:--no-cache
相关推荐
Web极客码37 分钟前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
星恒讯工业路由器1 小时前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨1 小时前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen2 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿2 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力2 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
木雷坞3 小时前
K8s GPU 推理服务 ImagePullBackOff 排查与预热
云原生·容器·kubernetes·gpu算力
wj3055853783 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
人生匆匆3 小时前
通过nginx解决跨域问题
运维·nginx
原来是猿3 小时前
【Socket编程预备知识】
linux·运维·服务器·网络