Docker Build用法大全:构建与推送Docker镜像的终极指南

Docker Build是Docker提供的一个核心命令,用于根据Dockerfile中的指令构建自定义的Docker镜像。以下是Docker Build的十种主要用法及其示例的优化文章:

一、构建镜像并指定标签

命令:

docker build -t my-image:tag .

说明:
此命令在当前目录下查找名为Dockerfile的文件,并根据其中的指令构建一个Docker镜像。-t参数用于指定镜像的名称和标签。

二、在构建过程中传递构建参数

命令:

docker build --build-arg ARG_NAME=value -t my-image:tag .

说明:

使用--build-arg参数,您可以在构建过程中传递自定义的参数值给Dockerfile中的ARG指令。

三、从远程Git仓库构建镜像

命令:

docker build -t my-image:tag https://github.com/username/repo.git

说明:

Docker可以直接从Git仓库克隆代码并构建镜像。这通常用于自动化持续集成/持续部署(CI/CD)流程。

四、多阶段构建

Dockerfile示例:

# 第一阶段:构建应用  FROM maven:3.8.1-openjdk-11-slim AS builder  WORKDIR /app  COPY . .  RUN mvn clean install    # 第二阶段:运行应用  FROM openjdk:11-jre-slim  WORKDIR /app  COPY --from=builder /app/target/my-app.jar .  CMD ["java", "-jar", "my-app.jar"]

说明:
多阶段构建允许您在一个Dockerfile中定义多个构建阶段,并在每个阶段中使用不同的基础镜像。这通常用于减少最终镜像的大小。

五、使用Docker Compose构建

docker-compose.yml示例:

version: '3'  services:    my-service:      build:        context: .        dockerfile: Dockerfile        args:          ARG_NAME: value      image: my-image:tag

说明:
Docker Compose允许您使用YAML文件定义多个服务及其依赖关系。在build部分,您可以指定构建上下文、Dockerfile的路径和传递的构建参数。

六、使用缓存策略

Dockerfile示例:

# 使用缓存  RUN apt-get update && apt-get install -y \      package1 \      package2    # 不使用缓存  RUN apt-get update && apt-get install -y --no-cache \      package3 \      package4

说明:
Docker会缓存每个RUN指令的结果。通过使用--no-cache标志,您可以禁用此功能并强制Docker重新运行指令。

七、构建并推送镜像到Docker仓库

命令:

docker build -t my-image:tag .  docker push my-image:tag

说明:
首先,使用docker build命令构建镜像。然后,使用docker push命令将镜像推送到Docker Hub或其他Docker仓库。

八、通过Dockerfile目录构建镜像

命令:

docker build -t my-image:tag /path/to/dockerfile/dir

说明:
使用-f--file参数(或简写为-f),您可以指定Dockerfile的路径。如果省略该参数,Docker将默认在当前目录下查找名为Dockerfile的文件。

九、设置构建进度输出模式

命令:

docker build --progress=plain -t my-image:tag .

说明:
通过--progress参数,您可以控制Docker构建过程中输出进度的格式。plain是一个简单的输出模式,仅显示必要的进度信息。

十、构建无需Dockerfile的上下文镜像

命令:

cat Dockerfile | docker build -t my-image:tag -

说明:
使用-作为构建上下文,Docker会从标准输入中读取Dockerfile的内容。这在某些高级场景(如脚本中的自动化)中可能很有用。但是,通常更常见的是使用文件系统上的Dockerfile文件。

请注意,对于第十种用法,虽然技术上可行,但在实践中并不常见,因为通常建议将Dockerfile存储在文件系统上的文件中以便于管理和版本控制。

原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/knowledgebase/docker-build-guide-building-pushing-images-ultimate-reference.html

(0)
运维侠的头像运维侠共建用户
上一篇 2025年10月1日 22:10
下一篇 2025年10月3日 18:11

相关推荐

发表回复

登录后才能评论