hel*_*RLD 22 docker dockerfile docker-compose
我是 Docker 的新手,并尝试使用纯 html 构建 docker 映像,但我收到此错误消息,说 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:open /var/lib/docker/tmp/buildkit-mount602954594 /Dockerfile: 没有那个文件或目录
我的文件夹目录是这样的
C:\Users\hailey\Desktop\GitTest
|- Dockerfile.txt
|- README.md
|- testHelloWorld.html
Run Code Online (Sandbox Code Playgroud)
在 Dockerfile 里面,我有
FROM ubuntu
WORKDIR C/Users/hailey/Desktop/GitTest
COPY testHelloWorld.html .
EXPOSE 8080
CMD ["html","testHelloWorld.html"]
Run Code Online (Sandbox Code Playgroud)
我做了我的命令 docker build 。在目录 C:\Users\hailey\Desktop\GitTest 内。然后得到
[+] Building 0.1s (2/2) FINISHED
=> [internal] load build definition from Dockerfile
=> => transferring dockerfile: 2B
=> [internal] load .dockerignore
=> => transferring context: 2B
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount602954594/Dockerfile: no such file or directory
Run Code Online (Sandbox Code Playgroud)
有没有人有任何其他我做错了什么?
Gab*_*son 57
docker 文件的名称没有扩展名,只有Dockerfile
大写D
和小写f
小智 16
如果您确实不需要使用 buildkit:
尝试在执行构建/Docker 编辑器之前设置这些 .env:
export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0
Run Code Online (Sandbox Code Playgroud)
可以使用 .docker 文件提供 docker 文件的文件名-f
。
例如,如果您的 docker 文件名为Dockerfile.base
,请build
按如下方式调用命令:
docker build . -f Dockerfile.base -t helloworld
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令启动构建映像:
docker run --rm -it helloworld
Run Code Online (Sandbox Code Playgroud)
小智 8
对于那些使用的人docker-compose build
,还请确保您已正确设置build
路径docker-compose.yml
:
version: '3.8'
services:
web:
build: ./services/web/ --> this folder should contain your Dockerfile, otherwise you will have the above error
Run Code Online (Sandbox Code Playgroud)
我想在一个答案中总结来自不同答案的信息,并添加我自己的经验,使我想到这个问题:
ls
或dir
取决于您分别使用的是 Linux 还是 Windows/cmd shell,以确定您是否将用于构建的文件)您的 docker 容器存在于那里)dockerfile
和Dockerfile
. 如果文件名中有其他大写字母,它很可能会失败。另请注意,默认文件名没有文件扩展名(例如,如果您要在记事本中创建文件,默认情况下它可能是 .txt 或其他扩展名)。这里有另一个答案,它显示了如何从记事本保存没有文件名的文件,但您也可以分别在 Linux 和 Windows 命令提示符下使用以下命令:mv dockerfile.txt dockerfile
ren dockerfile.txt dockerfile
dockerfile
/ Dockerfile
,那么您可以使用该选项-f
(链接到 docs),其中指出:-f, --file string Dockerfile 的名称(默认为 'PATH/Dockerfile')
取自另一个答案,这是一个如何使用该命令的示例:
docker build . -f Dockerfile.base -t helloworld
Run Code Online (Sandbox Code Playgroud)
只是为了将它们组合在一起,一旦容器构建完毕,您就不需要再次使用文件名,因此您可以使用以下命令运行它:
docker run --rm -it helloworld
Run Code Online (Sandbox Code Playgroud)
我的问题是,文件名是正确的,但扩展名是txt
. 我所做的是,打开记事本++并粘贴这一FROM mcr.microsoft.com/dotnet/aspnet:3.1
行,然后从记事本++中保存该文件,如下所示
保存文件后,它将如下所示
归档时间: |
|
查看次数: |
44352 次 |
最近记录: |