执行docker build 报错文件找不到failed to solve: failed to read dockerfile: no such file or directory

Bryant_zwk 2024-06-30 08:07:04 阅读 58

执行docker build 报错文件找不到解决方案

执行命令:

docker build -t nginx:v2 .

报错内容如下:

ERROR: failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount1465009252/Dockerfile: no such file or directory

请添加图片描述

排查思路:

1、查看当前dockerfile文件名称是默认名称

在没有指定参数的情况下必须是dockerfile或者是Dockerfile,不允许有后缀

2、确保您从 Dockerfile 的保存位置运行命令。

必须要在当前dockerfile文件目录下执行docker build 命令

解决方案:

1、将dockerfile文件名称改成默认名:dockerfile或者Dockerfile

2、如果是要用自定义的dockerfile文件名称,需要使用 -f 选项指定自定义文件名

docker build -t nginx:v1 -f nginx_dockerfile .

3、必须要在当前dockerfile文件目录下执行docker build 命令,包括需要用到的文件指定正确目录

注意:

dockerfile文件名字可以任意 ,但需要在build时候使用 -f 指定文件名称,如果未使用-f 指定文件名字,会默认去找名字为Dockerfile的文件。推荐使用Dockerfile命名,这样便可以不用指定文件名


扩展: docker build 命令选项介绍

1、-t,–tag: 为构建的镜像指定一个标签。标签可以是名称、版本号或者带有仓库信息的完整标识。

docker build -t nginx:v1 .

2、-f, --file: 指定 Dockerfile 的自定义路径和文件名。默认情况下,docker build 假定 Dockerfile 位于当前工作目录中。通过 -f 选项可以指定其他路径或文件名。

docker build -f /path/to/nginx_dockerfile .

3、–build-arg: 设置构建时的参数,可以在 Dockerfile 中使用。

bashCopy code

docker build --build-arg HTTP_PROXY=http://proxy.example.com:80 .

4、–no-cache: 不使用缓存。默认情况下,Docker 将尝试使用缓存的中间镜像层来加速构建过程。使用 --no-cache 将强制重新生成所有层

bashCopy code

docker build --no-cache .

5、–rm: 构建完成后删除中间容器。默认情况下,Docker 会保留构建过程中生成的中间容器,使用 --rm 可以在构建完成后删除这些容器。

bashCopy code

docker build --rm .

6、–network: 设置构建时的网络模式。默认情况下,使用主机的网络模式。例如:

bashCopy code

docker build --network=host .

7、–pull: 在构建之前尝试拉取最新的基础镜像。例如:

bashCopy code

docker build --pull .

8、–target: 指定构建的目标阶段。Dockerfile 可能包含多个阶段,通过 --target 可以选择性地构建其中的一个阶段。例如:

bashCopy code

docker build --target=mytarget .

以上为docker build构建镜像时常用的选项,可以运行 docker build --help 查看完整的选项列表。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。