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

Docker容器启动报错求助:exec /usr/local/bin/run-docker-project不存在

排查Docker容器启动报错:exec /usr/local/bin/run-docker-project: no such file or directory

核心矛盾点先理清

你的Dockerfile里有个容易混淆的地方:本地的run-docker-project脚本被COPY到容器内的/usr/local/bin/run-access-in-docker,但容器ENTRYPOINT指向的/usr/local/bin/run-docker-project是从access-service.deb解压出来的。启动报错说明这个解压后的文件要么不存在,要么无法被正确执行(比如shebang不兼容)。

构建环节加日志的具体操作

1. 验证deb包解压结果

在dpkg-deb --extract步骤后直接检查目标文件,确保解压成功:

RUN dpkg-deb --extract /var/access-service/access-service.deb / && \
    ls -la /usr/local/bin/run-docker-project && \  # 新增:确认文件存在
    chmod 0755 /usr/local/bin/run-docker-project && \
    /bin/rm -f /var/access-service/access-service.deb

构建时用docker build --no-cache .强制重新构建,盯着这一步的输出——如果ls命令报错,说明deb包本身就没包含这个文件,大概率是Ubuntu更新后,本地生成deb包的流程出了问题。

2. 确认COPY的脚本是否到位(可选)

虽然ENTRYPOINT没用这个文件,但可以确认COPY步骤是否正常:

COPY installation/scripts/docker/run-docker-project /usr/local/bin/run-access-in-docker
RUN ls -la /usr/local/bin/run-access-in-docker  # 新增:检查COPY结果

3. 检查脚本的shebang兼容性

Alpine默认没有bash,如果解压出来的run-docker-project脚本开头是#!/bin/bash,会触发类似"文件找不到"的错误。可以在构建时查看shebang:

RUN dpkg-deb --extract /var/access-service/access-service.deb / && \
    ls -la /usr/local/bin/run-docker-project && \
    head -n 1 /usr/local/bin/run-docker-project && \  # 新增:查看脚本开头的解释器
    chmod 0755 /usr/local/bin/run-docker-project && \
    /bin/rm -f /var/access-service/access-service.deb

如果确实是bash的shebang,就在apk add命令里加上bash:

RUN apk add --no-cache unzip dpkg curl ttf-dejavu bash

4. 手动进入镜像排查

如果构建日志显示一切正常,但启动还是报错,直接启动镜像的shell手动验证:

docker run --rm -it <你的镜像名称> sh
# 进入容器后执行以下命令
ls -la /usr/local/bin/run-docker-project
./usr/local/bin/run-docker-project  # 直接执行看具体错误

其他排查方向

  • 检查本地deb包的完整性:Ubuntu更新后,生成access-service.deb的工具(比如dpkg)版本可能变化,导致deb包结构异常。可以在本地执行dpkg-deb --extract build/distributions/docker/access-service.deb /tmp/test,看看/tmp/test/usr/local/bin/下是否有run-docker-project。
  • 清理docker-compose缓存:运行docker-compose build --no-cache,避免复用旧的构建层。
  • 检查Docker版本兼容性:Ubuntu更新后Docker版本有没有被动更新?虽然你用的是24.0.7,但可以确认下构建上下文的权限、文件路径是否有变化。

内容的提问来源于stack exchange,提问作者Evan Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:09:56