Ошибка при запуске сборки докера для контейнера arm32v7 на машине amd64 linux: standard_init_linux.go: 207 - PullRequest
0 голосов
/ 09 мая 2019

У меня есть машина amd64 linux, которую я использую для сборки контейнера arm32v7.Когда docker build встречает первую команду RUN, она выдает ошибку:

standard_init_linux.go:207: exec user process caused "no such file or directory"

. Это можно легко воспроизвести без файла docker, запустив docker run -it arm32v7/ubuntu:xenial на хосте amd64 linux.

Я видел эту жалобу в другом месте, но большинство советов состоит в том, что вам нужно собрать контейнер arm32v7 на хосте arm32v7.Это довольно непрактично.

Я добился успеха в Ubuntu 19.04 и 18.10, добавив эмуляцию архитектуры:

sudo apt-get install -y qemu qemu-user-static qemu-user binfmt-support

После добавления этих пакетов ошибка исчезает, и я могу создать свой arm32v7.контейнер.

Но это работает НЕ для Ubuntu 18.04 или 16.04.

Есть ли общее решение, которое работает везде?

1 Ответ

1 голос
/ 09 мая 2019

Кажется, что некоторые шаги после установки не выполняются в Ubuntu 18.04 и 16.04.

Вот пара обходных путей, которые решают проблему 18.04 и 16.04.

Метод 1:

git clone https://github.com/computermouth/qemu-static-conf.git
sudo mkdir -p /lib/binfmt.d
sudo cp qemu-static-conf/*.conf /lib/binfmt.d
sudo systemctl restart systemd-binfmt.service

Метод 2:

sudo mkdir -p /lib/binfmt.d
sudo sh -c 'echo :qemu-arm:M::\\x7fELF\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x28\\x00:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfe\\xff\\xff\\xff:/usr/bin/qemu-arm-static:F > /lib/binfmt.d/qemu-arm-static.conf'
sudo sh -c 'echo :qemu-aarch64:M::\\x7fELF\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\xb7\\x00:\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xfe\\xff\\xff\\xff:/usr/bin/qemu-aarch64-static:F > /lib/binfmt.d/qemu-aarch64-static.conf'
sudo systemctl restart systemd-binfmt.service
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...