Как решить код ошибки Docker 139 на Манджаро?
Я недавно установил Manjaro на свой компьютер, и я делаю несколько тестов. Я пытался собрать и запустить Docker, который отлично работает на Windows, Mac Os, Ubuntu и т. Д.
Но когда я бегу 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 ответа
Это может быть связано с версией ядра вашего компьютера, как описано в этой проблеме:
Вероятно, это связано с изменениями в связывании vsyscall в ядре 4.11. Попробуйте загрузить ядро с помощью vsyscall=emulate и посмотрите, поможет ли это. Это работает нормально в конфигурации ядра linuxkit 4.11 без проблем, так что это связано с конфигурацией.
Попробуйте реализовать решение из этого комментария:
Привет, указав эту команду в / etc / default / grub:
GRUB_CMDLINE_LINUX_DEFAULT = "vsyscall = эмулировать"
Дайте нам знать, если это решит проблему для вас.
Наконец то заработало.
Мне пришлось обновить свое ядро до последней версии (с 4.19.16-1 до 4.20.3-1). Хотя не знаю почему.
Насколько я знаю, ошибка 139 является ошибкой сегментации, вызванной аппаратным обеспечением с защитой памяти. он говорит вам, что ваша программа пытается получить доступ к ограниченной области памяти. возможно, вы пытаетесь получить доступ к постоянной памяти, получили разыменование нулевого указателя в любом месте вашего кода или произвели переполнение стека.