docker build -t mytomcat:10.1-jdk17 -f Dockerfile-MyTomcat .

核心报错原因

  1. 构建上下文错误 :你在根目录 / 执行 docker build,构建上下文(.)会包含 /proc(Linux 虚拟文件系统,动态生成临时文件),Docker 扫描上下文时会尝试访问这些动态消失的文件,导致 "文件未找到" 错误;
  2. 次要提示 :legacy builder 弃用是通用提醒,不影响构建,可忽略或升级 buildx。

分步解决方案(必看)

步骤 1:创建专属构建目录(核心修复)

绝对不要在根目录 / 执行 docker build ,根目录包含 /proc//sys 等虚拟目录,Docker 会递归扫描所有文件,既慢又触发错误。

复制代码
# 1. 创建专门的构建目录(比如/opt/tomcat-build)
mkdir -p /opt/tomcat-build
cd /opt/tomcat-build

# 2. 将你的Dockerfile-MyTomcat移动到该目录(替换为实际路径)
# 假设Dockerfile-MyTomcat在/目录下,执行:
mv /Dockerfile-MyTomcat /opt/tomcat-build/

# 3. 若构建需要其他文件(如tomcat安装包、配置),也拷贝到该目录
# 示例:cp /path/to/tomcat.tar.gz /opt/tomcat-build/
步骤 2:(可选)创建.dockerignore 排除无关文件

在构建目录下创建 .dockerignore 文件,排除 Docker 不需要扫描的文件(进一步避免上下文扫描错误):

复制代码
# 进入构建目录
cd /opt/tomcat-build

# 创建.dockerignore
cat > .dockerignore << EOF
# 排除系统虚拟目录
/proc/
/sys/
/dev/
# 排除日志、临时文件
*.log
tmp/
# 排除Docker自身文件
.dockerignore
Dockerfile-MyTomcat.bak
# 排除其他无关文件(按需添加)
EOF
步骤 3:重新执行构建命令

在专属构建目录下执行 build,此时上下文仅包含该目录的文件,不会扫描 /proc:

复制代码
cd /opt/tomcat-build
docker build -t mytomcat:10.1-jdk17 -f Dockerfile-MyTomcat .
步骤 4:(可选)解决 "legacy builder 弃用" 提示

若想消除弃用提醒,安装 buildx(Docker 20.10 + 支持):

复制代码
# 安装buildx(CentOS/Debian通用)
docker buildx install

# 用buildx构建(功能一致,仅消除提示)
docker buildx build -t mytomcat:10.1-jdk17 -f Dockerfile-MyTomcat . --load
# --load:将构建的镜像加载到本地Docker(默认buildx构建在容器中,需显式加载)

关键注意事项

  1. 构建上下文原则 :
    • 构建目录只放构建镜像必需的文件(Dockerfile、tomcat 包、配置等),越少越好;
    • 绝对避免在 /、/root、/var 等系统目录执行 docker build。
  2. /proc 目录的特殊性 :/proc 是 Linux 内核暴露的进程信息虚拟文件系统,文件是动态生成 / 销毁的,Docker 扫描上下文时会尝试读取这些临时文件,必然触发 "找不到文件" 错误。
  3. 若仍报错 :检查构建目录下是否有软链接指向 /proc//sys 等目录,删除这类软链接后重试。

验证构建结果

复制代码
# 查看构建成功的镜像
docker images | grep mytomcat

# 若构建失败,查看详细日志(定位具体问题)
docker build --no-cache -t mytomcat:10.1-jdk17 -f Dockerfile-MyTomcat .
# --no-cache:禁用缓存,避免旧缓存干扰
相关推荐
分布式存储与RustFS33 分钟前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
螺蛳粉 螺蛳粉11 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻12 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
n1121215 小时前
Ollama 接 Open WebUI 中文界面:我踩的 4 个坑
云原生·eureka·ollama·本地大模型·open webui·私有部署·中文界面
阿里云云原生15 小时前
用户说 App“下不了单”:用 Session Replay 看清流程卡在哪一步
云原生
阿里云云原生16 小时前
运维走出控制台:阿里云 AgentCore AI Native 运维实践
云原生
SelectDB技术团队20 小时前
Apache Doris 异步物化视图与 Snowflake MV / Dynamic Tables 工程化对照
云原生·私有化部署·olap·实时数仓·apache doris·国产化替代·异步物化视图
分布式存储与RustFS20 小时前
可观测性数据落进对象存储:Proscia 案例拆解与 ClickHouse 自托管配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
fb_1234521 小时前
K8s动态卷供应实战_StorageClass与LocalPath_NFS双Provisioner
云原生·容器·kubernetes
时间售卖铺1 天前
Docker私有仓库搭建与实战指南
运维·docker·云原生·容器