0

我最近在我的电脑上安装了 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

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

4

3 回答 3

2

这可能与您计算机的内核版本有关,如本期报道:

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

尝试从此评论中实施解决方案:

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

GRUB_CMDLINE_LINUX_DEFAULT="vsyscall=emulate"

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

于 2019-02-04T13:39:25.940 回答
0

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

于 2019-02-04T13:29:49.340 回答
0

终于让它工作了。

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

于 2019-02-04T22:41:35.067 回答