VirtualBox Ubuntu环境下Docker构建镜像提示Dockerfile不存在求助
Java HelloWorld Docker构建报错:找不到Dockerfile
问题详情
我编写了一个最简单的Java HelloWorld应用,文件结构如下:
|-- HelloWorld |-- src |-- Main.java |-- Dockerfile
使用环境:VirtualBox 7.0 + Ubuntu x64系统,Docker版本24.0.5。
执行构建镜像命令时,实际输入的命令(从错误日志可见)为:
docker build -t hello.
出现如下错误:
root@ubuntu: /media/sf_IdeaProjects/HelloWorld# docker build -t hello. [+] Building 0.1s (2/2) FINISHED => [internal] load build definition from Dockerfile => [internal] load .dockerignore => => transferring dockerfile: 2B => => transferring context: 2B ERROR: failed to solve: failed to read dockerfile: open /var/snap/docker/common/var-lib-docker/tmp/buildkit-mount1689060805/Dockerfile: no such file or directory
注:IdeaProjects文件夹已与VirtualBox虚拟机系统共享。
Dockerfile内容
FROM openjdk:17-alpine WORKDIR /app COPY ./src . RUN javac Main.java CMD ["java", "Main"]
Main.java内容
public class Main { public static void main(String[] args) { System.out.println("Hello world!"); } }
解决办法
- 修正命令格式
错误日志显示你输入的命令中hello和.之间缺少空格,正确命令应为:
docker build -t hello .
Docker会把hello.识别为镜像名,而非指定构建上下文目录,导致无法找到当前目录下的Dockerfile。
- 排查共享文件夹权限
VirtualBox共享文件夹可能存在权限不足,导致Docker无法读取文件:
- 将HelloWorld文件夹复制到Ubuntu本地目录(如
/home/your-user/),再执行构建命令。 - 给共享文件夹添加权限:
sudo chmod -R 755 /media/sf_IdeaProjects/HelloWorld
确认Dockerfile文件名
确保文件名是**Dockerfile(首字母大写,无后缀)**,Docker默认仅识别该名称的构建文件,若文件名拼写错误(如dockerfile、DockerFile)会导致找不到文件。处理Snap版Docker的路径限制
你使用的是Snap安装的Docker,Snap应用对文件系统访问有严格限制,共享文件夹可能不在允许访问范围内:
- 改用官方APT源安装Docker:
sudo snap remove docker sudo apt update sudo apt install docker.io -y
- 或给Snap版Docker添加访问可移动媒体的权限:
sudo snap connect docker:removable-media
内容的提问来源于stack exchange,提问作者Arkadi
相关产品推荐
相关产品推荐

