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

如何进入Spring Native镜像容器?

Spring Native Docker容器无法进入的解决方法

问题说明

按照Spring Native教程构建的Docker镜像启动容器后,执行docker exec -it <容器名> bash/sh//bin/sh均无法进入容器,报错如下:

OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused:
exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown

或提示$PATH not found

执行docker inspect <镜像名>查看镜像信息,显示"Cmd": null。

原因

Spring Native默认构建的是无基础依赖(distroless)的极简镜像,这类镜像为了缩小体积,剔除了shell、包管理器等额外工具,因此无法通过shell命令进入容器。

解决办法

1. 查看容器日志(无需进入容器)

如果只是排查应用运行问题,直接查看容器日志即可:

# 查看全部日志
docker logs <容器名>

# 实时跟踪日志输出
docker logs -f <容器名>

2. 构建包含基础工具的镜像(支持shell进入)

如果确实需要进入容器调试,可修改构建配置,使用包含基础系统工具的构建镜像:

  • Maven项目:在pom.xml中调整Spring Native构建配置,指定base类型的builder镜像:
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.experimental</groupId>
          <artifactId>spring-native-maven-plugin</artifactId>
          <configuration>
            <builder>paketobuildpacks/builder:base</builder>
          </configuration>
        </plugin>
      </plugins>
    </build>
    
  • Gradle项目:在build.gradle中配置:
    springNative {
      builder = "paketobuildpacks/builder:base"
    }
    

重新构建镜像并启动容器后,即可通过docker exec -it <容器名> sh进入容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:47:38