【问题标题】:Docker exiting with status code 139Docker 以状态码 139 退出
【发布时间】:2017-10-13 07:02:09
【问题描述】:

我有一个 .Net Core 应用程序,它可以在 docker 映像上运行。我在命令行中输入:

docker run -d --net=bridge -it --name=testapp -v /var/test/:/var/test microsoft/aspnetcore-build /bin/bash -c "dotnet /var/test/test.dll"

它已创建,但它以状态码 139 退出。可能是什么问题。

【问题讨论】:

  • 看here:139本质上是容器内正在运行的程序因信号11而失败,这是一个分段错误SIGSEGV。在容器外测试您的代码,或在附带调试器的情况下在内部运行它。后面有多种方法(谷歌“.net core debug inside container”获取选项列表)。

标签: docker .net-core


【解决方案1】:

不要同时运行 docker 镜像和运行 bash 命令(-c "dotnet /var/test/test.dll"),而是分步执行。

例如:

  1. 运行这个命令:

    docker run -d --net=bridge -it --name=testapp -v /var/test/:/var/test microsoft/aspnetcore-build
    

    它将运行一个名为 testapp 的 aspnetcore Image 并在您的机器和 docker 机器之间映射测试文件。

  2. 进入docker机器:

     docker exec -it testapp bash
    
  3. 进入 /var/test 文件夹并运行应用程序:

     dotnet test.dll
    

【讨论】:

  • 如果容器进程立即崩溃,运行也将无法进行。
【解决方案2】:

我通过在 Dockerfile 中的 RUN 行之前添加 COPY 行来修复项目中的 Docker 错误 139:

COPY blueprint/src/main/python/setup.py setup.py
RUN python setup.py

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 2019-12-07
    • 1970-01-01
    • 2019-04-07
    • 2015-04-30
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多