Bug 51885 - Docker на Loongson не может запустить базовый образ
Summary: Docker на Loongson не может запустить базовый образ
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: runc (show other bugs)
Version: unstable
Hardware: loongarch64 Linux
: P5 normal
Assignee: cow@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-30 12:10 MSK by Павел
Modified: 2024-10-31 13:26 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Павел 2024-10-30 12:10:53 MSK
При попытке запуска любого образа (в т.ч. собранного из rootfs установленного в QEMU ALT Linux для Loongson) появляется такая ошибка. Вероятно, в самом докере отсутствует поддержка для этой архитектуры:

```
docker run -it --rm alt:latest bash
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error loading seccomp filter into kernel: error patching filter: error generating patch for filter: error finding last syscalls for -ENOSYS stub: unable to get native arch: unrecognized architecture 0xc0000102: unknown.
```

alt:latest в данном примере - это образ rootfs установленной в QEMU Alt Linux. 

Для установки и для создания образа использовался диск установки по ссылке [1].

[1] http://get.srt.basealt.ru/ports/loongarch64/Sisyphus/images/loongarch64/alt-server-20240426-loongarch64.iso
Comment 1 Ivan A. Melnikov 2024-10-30 13:17:03 MSK
> Вероятно, в самом докере отсутствует поддержка для этой архитектуры

Не так давно мы успешно собирали и запускали базовый образ по инструкции

https://www.altlinux.org/Docker#Сборка_базового_образа_с_использованием_mkimage-profiles

Ближе к вечеру попробую ещё раз, может что-то в Сизифе неудачно обновилось.
Comment 2 Ivan A. Melnikov 2024-10-30 15:49:48 MSK
Действительно, работа с seccomp в runc изменилась, надо патчить по-другому. Сейчас попробую починить.
Comment 3 Павел 2024-10-30 16:22:28 MSK
Я попробовал собрать через Dockerfile, как вы прислали. Продрался через документацию и mkimage. Собрал тарболл (.tar.gz) и попробовал по инструкции собрать образ:

```
$ docker build --rm --tag=alt:from-mkimage .
[+] Building 4.3s (5/5) FINISHED                                                              docker:default
 => [internal] load build definition from Dockerfile                                                    0.0s
 => => transferring dockerfile: 208B                                                                    0.0s
 => [internal] load .dockerignore                                                                       0.0s
 => => transferring context: 2B                                                                         0.0s
 => [internal] load build context                                                                       0.4s
 => => transferring context: 22.70MB                                                                    0.4s
 => [1/2] ADD docker-latest.tar.xz /                                                                    2.8s
 => ERROR [2/2] RUN true > /etc/security/limits.d/50-defaults.conf                                      1.0s
------                                                                                                       
 > [2/2] RUN true > /etc/security/limits.d/50-defaults.conf:                                                 
0.258 runc run failed: unable to start container process: error loading seccomp filter into kernel: error patching filter: error generating patch for filter: error finding last syscalls for -ENOSYS stub: unable to get native arch: unrecognized architecture 0xc0000102
------
Dockerfile:5
--------------------
   3 |     ADD docker-latest.tar.xz /
   4 |     
   5 | >>> RUN true > /etc/security/limits.d/50-defaults.conf
   6 |     
   7 |     # overwrite this with 'CMD []' in a dependent Dockerfile
--------------------
ERROR: failed to solve: process "/bin/sh -c true > /etc/security/limits.d/50-defaults.conf" did not complete successfully: exit code: 1
```

Результат тот же, что и при ручном (через docker import) включении, только оно сломалось ещё на этапе сборки образа.
Comment 4 Ivan A. Melnikov 2024-10-30 16:48:19 MSK
> Я попробовал собрать через Dockerfile, как вы прислали.
[...]

Спасибо. Такую ошибку воспроизвёл, исправление тестирую.
Comment 5 Ivan A. Melnikov 2024-10-30 17:12:25 MSK
Прошу мейнтейнера пропустит задачу c исправлением:

https://git.altlinux.org/tasks/361175/
Comment 6 Alexey Shabalin 2024-10-30 17:30:02 MSK
Я то везде использую crun. С ним пробовали?
Comment 7 Ivan A. Melnikov 2024-10-30 17:35:00 MSK
Итак, проблема была в пакете runc, у которого отвалились наши патчи для поддержки loongarch64, и никто не заметил, что надо бы сделать и приложить другие патчи. На будущее мы внесём докерные пакеты в список того, что мы тестируем перед приёмом в sisyphus_loongarch64.

Исправление будет доступно в sisyphus_loongarch64 завтра, после синхронизации репозиториев (04:00 MSK). Вам понадобится runc 1.2.0-alt1.0.port или более свежий.
Comment 8 Ivan A. Melnikov 2024-10-30 17:54:05 MSK
(In reply to Alexey Shabalin from comment #6)
> Я то везде использую crun. С ним пробовали?

Ну, runc у нас по умолчанию, и единственный сконфигурированный из коробки. Даже как настроить использование crun в docker надо догадываться. Допишешь на wiki?

Но да, с crun, похоже, работает.
Comment 9 Repository Robot 2024-10-30 17:58:28 MSK
runc-1.2.0-alt1.1 -> sisyphus:

 Wed Oct 30 2024 Ivan A. Melnikov <iv@altlinux> 1.2.0-alt1.1
 - NMU: fix loongarch64 support (ALT#51885)
   + backport upstream patch from libseccomp-golang upstream
   + add a similar fix for libcontainer
Comment 10 Павел 2024-10-31 13:26:59 MSK
Подтверждаю, что починилось. Спасибо!