You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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!");
    }
}

解决办法

  1. 修正命令格式
    错误日志显示你输入的命令中hello和.之间缺少空格,正确命令应为:
docker build -t hello .

Docker会把hello.识别为镜像名,而非指定构建上下文目录,导致无法找到当前目录下的Dockerfile。

  1. 排查共享文件夹权限
    VirtualBox共享文件夹可能存在权限不足,导致Docker无法读取文件:
  • 将HelloWorld文件夹复制到Ubuntu本地目录(如/home/your-user/),再执行构建命令。
  • 给共享文件夹添加权限:
sudo chmod -R 755 /media/sf_IdeaProjects/HelloWorld
  1. 确认Dockerfile文件名
    确保文件名是**Dockerfile(首字母大写,无后缀)**,Docker默认仅识别该名称的构建文件,若文件名拼写错误(如dockerfile、DockerFile)会导致找不到文件。

  2. 处理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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:30:02