如何在Manjaro上解决Docker错误代码139?

时间:2019-02-04 13:22:32

标签: docker docker-compose manjaro

我最近在计算机上安装了Manjaro,并且正在做一些测试。 我试图构建和启动一个可以在Windows,Mac OS,Ubuntu等操作系统上完美运行的Docker。

但是当我运行sudo docker-compose up时,我得到一个错误。 除了最后,一切似乎都正常:

Successfully built d72aa4c69ad6
Successfully tagged code_interface:latest
WARNING: Image for service interface was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating code_db_1 ... done
Creating code_web_1 ... done
Creating code_interface_1 ... done
Attaching to code_db_1, code_web_1, code_interface_1
code_db_1 exited with code 139

这是我的docker-compose.yml的样子:

db:
  image: mongo:3.0.2
  ports:
    - "27017:27017"

web:
  build: X
  ports:
    - "5000:5000"
  links:
    - db

interface:
  build: Y
  ports:
    - "8080:8080"
  links:
    - web

知道为什么我会收到此错误或如何解决该错误吗?

3 个答案:

答案 0 :(得分:0)

据我所知,错误139是具有内存保护功能的硬件引发的分段错误。它告诉您您的程序正在尝试访问内存的受限区域。 也许您试图访问只读存储器,在代码中的任何地方都取消了空指针的引用,或者产生了堆栈溢出。

答案 1 :(得分:0)

这可能与您计算机的内核版本有关,如this issue中所述:

  

这可能与4.11内核中vsyscall链接的更改有关。尝试使用vsyscall = emulate引导内核,看看是否有帮助。确实可以在linuxkit 4.11内核配置下正常运行,没有问题,因此与配置有关。

尝试从this comment实施解决方案:

  

嗨,在/ etc / default / grub中指定此命令:

     

GRUB_CMDLINE_LINUX_DEFAULT =“ vsyscall =仿真”

让我们知道它是否可以为您解决问题。

答案 2 :(得分:0)

最后使它起作用。

我必须将内核更新到最新版本(从4.19.16-1到4.20.3-1)。 真的不知道为什么。