docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > Docker build创建镜像

Docker build创建镜像命令示例实践

作者:掘铁

本文讲解Dockerfile的核心概念、基础指令、构建流程及优化技巧,涵盖镜像层结构、构建上下文、常用命令参数,强调多阶段构建、轻量镜像等最佳实践,感兴趣的朋友跟随小编一起看看吧

一、核心概念

二、Dockerfile 基础指令

1. FROM

2. RUN

3. COPY

4. ADD

5. WORKDIR

6. CMD

7. ENTRYPOINT

8. EXPOSE

9. ENV

三、docker build命令详解

基本语法

docker build [OPTIONS] PATH | URL | -

常用选项

示例

  1. 构建并标记镜像:
    docker build -t my_app:v1 .  # 当前目录为构建上下文
  2. 指定 Dockerfile 路径:
    docker build -t my_app:v1 -f Dockerfile.prod .
  3. 传递构建参数:
    docker build --build-arg ENV=prod -t my_app:prod .

四、构建流程示例

目标:构建一个 Node.js 应用镜像。

步骤 1:创建项目结构

mkdir -p node-app/{src,public}
touch node-app/server.js node-app/package.json

步骤 2:编写 Dockerfile

# 使用官方 Node.js 18 镜像作为基础
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用源码
COPY . .
# 暴露端口 3000
EXPOSE 3000
# 启动应用
CMD ["node", "server.js"]

步骤 3:构建镜像

docker build -t node-app:latest .

步骤 4:运行容器

docker run -p 3000:3000 node-app:latest

五、最佳实践

减少镜像层数
合并相关指令(如 RUN apt-get update && apt-get install -y ...),避免生成过多无用层。

使用 .dockerignore
排除构建上下文中的无关文件(如 node_modules.git),减少传输大小。

.git
node_modules
*.log

多阶段构建(Multi-Stage Builds)
分离构建环境和运行环境,减小最终镜像体积。

# 阶段 1:构建应用
FROM node:18 AS builder
WORKDIR /app
COPY . .
RUN npm install && npm run build
# 阶段 2:运行应用
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/server.js"]

使用轻量级基础镜像
优先选择 Alpine Linux 或 distroless 镜像,减少镜像体积和安全风险。

FROM node:18-alpine  # 体积约 100MB,远小于默认的 Ubuntu 镜像

避免以 root 用户运行
创建非 root 用户,提升容器安全性。

RUN adduser -D app_user
USER app_user

六、调试与优化

查看构建日志

docker build --progress=plain -t my_app:debug .  # 显示详细日志

跳过缓存

docker build --no-cache -t my_app:nocache .

分析镜像层

docker history my_app:latest  # 查看各层大小和命令

扫描镜像漏洞
使用 docker scan 或第三方工具(如 Trivy)检查安全风险。

docker scan my_app:latest

七、常见问题

八、总结

到此这篇关于Docker build创建镜像命令示例实践的文章就介绍到这了,更多相关Docker build创建镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文