Skip to content

Docker-образ не собирается на сервере Jenkins: runc can't mask dir /proc/acpi #1752

Open

Description

@sfaqer

С develop #13 (23.09) этап Build v2 падает на первом же RUN (лог #16):

runc run failed: unable to start container process: error during container init: can't mask dir "/proc/acpi": mount src=tmpfs, dst=/proc/acpi, flags=MS_RDONLY, data=nr_blocks=1,nr_inodes=1: invalid argument

Образ собирает buildx-сборщик на драйвере docker-container, то есть шаги запускает runc внутри контейнера moby/buildkit. В #13 этот контейнер создался заново из moby/buildkit:buildx-stable-1, сейчас это v0.32.2 с runc 1.4.3. Начиная с этой версии runc закрывает каталоги в /proc пустым tmpfs с nr_inodes=1, а штатное ядро 5.4 из Ubuntu 20.04 такое монтирование не принимает: opencontainers/runc#5348. В runc это исправлено в 1.5.1, но buildkit с ним пока не вышел, в v0.33.0 тоже 1.4.3. Linux Build и Linux testing на этом же сервере проходят: их контейнеры запускает runc самого docker.

Про Ubuntu 20.04 я сужу только по ошибке, доступа к серверу у меня нет. Проверить можно командой uname -r на хосте (если Jenkins в контейнере, то на хосте, а не в контейнере).

Пока это не починено, evilbeaver/onescript:dev не обновляется с 18.09, а при выпуске из release/latest образ тоже не соберется.

Что можно сделать на сервере:

  • поставить HWE-ядро 5.15 (linux-generic-hwe-20.04) и перезагрузиться. По разбору в runc#5348 в ядрах 5.15+ этой проверки нет, но на HWE я не проверял;
  • обновить ОС до 22.04 или 24.04. У 20.04 закончилась стандартная поддержка, но на сервере еще и сайт;
  • дождаться buildkit с runc 1.5.1+, удалить старый сборщик, и следующая сборка скачает новый образ.

Временный обход в Jenkinsfile — закрепить buildkit v0.30.0 (runc 1.3.5, до регрессии): #1753.

Activity

  1. EvilBeaver commented on Sep 26, 2026

    @EvilBeaver
    Owner

    почему до коммита 4c25637 все собиралось?

  2. sfaqer commented on Sep 27, 2026

    @sfaqer
    ContributorAuthor

    До 4c25637 образ по сути не собирался: все шаги RUN брались из кэша сборщика, CACHED в develop #9–#12 и в release/latest #29 (там собирался 2.2.0). Контейнеры не запускались, runc не вызывался. Из-за этого в образах и оставалась старая версия движка, поэтому в #1743 добавлен --no-cache, и теперь RUN выполняются по-настоящему.

    Кроме того, между #12 (18.09) и #13 (23.09) докер на сервере, похоже, чистили: в #13 заново скачались все образы (onescript-builder:gcc, node, dotnet/sdk), а контейнер buildkit создался с нуля из свежего buildx-stable-1. Так что откат --no-cache уже не поможет: кэша, скорее всего, нет, и первая сборка упадёт так же.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions