Docker build 命令
docker build
命令用于从 Dockerfile 构建 Docker 镜像,通过读取 Dockerfile 中定义的指令,逐步构建镜像,并将最终结果保存到本地镜像库中。
语法
docker build [OPTIONS] PATH | URL | -
**PATH**
: 包含 Dockerfile 的目录路径或.
(当前目录)。**URL**
: 指向包含 Dockerfile 的远程存储库地址(如 Git 仓库)。**-**
: 从标准输入读取 Dockerfile。
常用选项:
**-t, --tag**
: 为构建的镜像指定名称和标签。**-f, --file**
: 指定 Dockerfile 的路径(默认是PATH
下的Dockerfile
)。**--build-arg**
: 设置构建参数。**--no-cache**
: 不使用缓存层构建镜像。**--rm**
: 构建成功后删除中间容器(默认开启)。**--force-rm**
: 无论构建成功与否,一律删除中间容器。**--pull**
: 始终尝试从注册表拉取最新的基础镜像。
更多选项说明:
**--build-arg=[]**
: 设置构建镜像时的变量。**--cpu-shares**
: 设置 CPU 使用权重。**--cpu-period**
: 限制 CPU CFS 周期。**--cpu-quota**
: 限制 CPU CFS 配额。**--cpuset-cpus**
: 指定可使用的 CPU ID。**--cpuset-mems**
: 指定可使用的内存节点 ID。**--disable-content-trust**
: 忽略内容信任验证(默认启用)。**-f**
: 指定 Dockerfile 的路径。**--force-rm**
: 强制在构建过程中删除中间容器。**--isolation**
: 使用指定的容器隔离技术。**--label=[]**
: 设置镜像的元数据。**-m**
: 设置内存的最大值。**--memory-swap**
: 设置交换空间的最大值(内存 + 交换空间),-1
表示不限制交换空间。**--no-cache**
: 构建镜像时不使用缓存。**--pull**
: 尝试拉取基础镜像的最新版本。**--quiet, -q**
: 安静模式,构建成功后只输出镜像 ID。**--rm**
: 构建成功后删除中间容器(默认启用)。**--shm-size**
: 设置/dev/shm
的大小,默认值为 64M。**--ulimit**
: 设置 Ulimit 配置。**--squash**
: 将 Dockerfile 中所有步骤压缩为一层。**--tag, -t**
: 为镜像指定名称和标签,格式为name:tag
或name
;可以在一次构建中为一个镜像设置多个标签。**--network**
: 在构建期间设置RUN
指令的网络模式,默认值为default
。
1、构建镜像
这会从当前目录读取 Dockerfile 并构建一个名为 myimage:latest 的镜像。
2、指定 Dockerfile 路径
这会从 /path/to/ 目录读取 Dockerfile 并构建一个名为 myimage:latest 的镜像。
3、设置构建参数
这会在构建过程中使用 HTTP_PROXY 环境变量。
4、不使用缓存层构建镜像
这会在构建镜像时忽略所有缓存层,确保每一步都重新执行。
实例 - 使用 Dockerfile 构建镜像
1、创建 Dockerfile,内容如下:
2、构建镜像
输出示例:
3、验证镜像
输出示例:
注意事项
确保 Dockerfile 语法正确,并按照顺序执行每一步。
使用
.dockerignore
文件排除不需要的文件和目录,以减少构建上下文的大小。在生产环境中,尽量使用精简的基础镜像以减小镜像体积和提高安全性。
避免在 Dockerfile 中暴露敏感信息(如密码、密钥)。
docker build
命令是构建 Docker 镜像的核心工具,通过定义清晰的 Dockerfile,可以自动化地构建应用程序的运行环境和依赖。在使用时,确保合理设置选项和优化 Dockerfile,以提高构建效率和镜像质量。
高级进阶
Last updated