Bug 41371

Summary: Сборка docker (или OCI) образов
Product: Infrastructure Reporter: Alexey Shabalin <shaba>
Component: girarAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: Andrey Cherepanov <cas>
Severity: enhancement    
Priority: P5 CC: aen, glebfm, ldv, rider
Version: unspecified   
Hardware: all   
OS: Linux   

Description Alexey Shabalin 2021-11-17 17:00:15 MSK
Было бы здорово организовать сборку docker образов.
- все необходимое для сборки размещать в git.altlinux.org/people/$USER/containers/foo
- собирать образ на основе Dockerfile. Хотя бы для архитектур x86_64 и aarch64.
  существующие утилиты для сборки образов:
  - BuildKit https://github.com/moby/buildkit
  - buildah https://github.com/containers/buildah
  - Docker
- Выгружать полученный образ на какой-либо реестр образов(hub.docker.com, quay.io). Предлагаю организовать свой сервер реестра образов.
Comment 1 Dmitry V. Levin 2021-11-23 15:20:57 MSK
Для того, чтобы сборочница могла собирать docker-образы на основе Dockerfile, необходимо, чтобы используемый для сборки инструмент мог работать внутри hasher'а и, как следствие, быть непривилегированным и не требовать unprivileged userns.

Поскольку ни один из существующих инструментов не обладает таким свойством, придётся либо разработать такой инструмент, либо разработать другую сборочницу, которая не будет основана на безопасной воспроизводимой сборке с помощью hasher.
Comment 2 Anton Farygin 2021-11-23 15:22:24 MSK
Или, как вариант, можно использовать vm-run, если научиться забирать из него результаты сборки.
Comment 3 Dmitry V. Levin 2021-11-23 15:28:53 MSK
(In reply to Anton Farygin from comment #2)
> Или, как вариант, можно использовать vm-run, если научиться забирать из него
> результаты сборки.

И заранее ограничить множество поддерживаемых архитектур теми, где работает vm-run.
Comment 4 Anton Farygin 2021-11-23 15:35:55 MSK
да, конечно. Но это, возможно, будет проще чем переписывать hasher или инструменты сборки образов.

А можно каким-то образом репозиторий с пакетами сделать доступным внутри hasher ?
Comment 5 Dmitry V. Levin 2021-11-23 15:50:48 MSK
(In reply to Anton Farygin from comment #4)
> А можно каким-то образом репозиторий с пакетами сделать доступным внутри
> hasher ?

Во время обычной сборки пакетов вряд ли, а вообще да, поскольку hasher поддерживает монтирование.
Comment 6 Anton Farygin 2021-11-23 17:35:52 MSK
если во время сборки docker образов получится смонтировать внутрь hasher используемый репозиторий, то задача выглядит решаемой через vm-run. Понятно, что количество платформ будет ограничено наличием /dev/kvm, но я подозреваю что те платформы, на которых /dev/kvm нету, не очень нужно поддерживать в docker образах.
Comment 7 AEN 2021-11-25 09:28:16 MSK
(Ответ для Dmitry V. Levin на комментарий #3)
> (In reply to Anton Farygin from comment #2)
> > Или, как вариант, можно использовать vm-run, если научиться забирать из него
> > результаты сборки.
> 
> И заранее ограничить множество поддерживаемых архитектур теми, где работает
> vm-run.

Что мы теряем? 
e2k до выхода e2kv6
riscv64 пока,  хотя движение есть
mipsel мертв

Что ещё?
Comment 8 Anton Farygin 2021-11-25 09:32:48 MSK
Эти "теряемые" архитектуры отстутствуют на сборочнице, поэтому мы их не теряем до тех пор, пока они не будут интегрированы в основной girar.
Comment 9 Dmitry V. Levin 2021-11-25 13:44:28 MSK
(In reply to AEN from comment #7)
> (Ответ для Dmitry V. Levin на комментарий #3)
> > (In reply to Anton Farygin from comment #2)
> > > Или, как вариант, можно использовать vm-run, если научиться забирать из него
> > > результаты сборки.
> > 
> > И заранее ограничить множество поддерживаемых архитектур теми, где работает
> > vm-run.
> 
> Что мы теряем? 
> e2k до выхода e2kv6
> riscv64 пока,  хотя движение есть
> mipsel мертв
> 
> Что ещё?

armv7, но, видимо, 32-битные архитектуры не интересны.
Comment 10 AEN 2021-11-25 13:47:35 MSK
(Ответ для Dmitry V. Levin на комментарий #9)
> (In reply to AEN from comment #7)
> > (Ответ для Dmitry V. Levin на комментарий #3)
> > > (In reply to Anton Farygin from comment #2)
> > > > Или, как вариант, можно использовать vm-run, если научиться забирать из него
> > > > результаты сборки.
> > > 
> > > И заранее ограничить множество поддерживаемых архитектур теми, где работает
> > > vm-run.
> > 
> > Что мы теряем? 
> > e2k до выхода e2kv6
> > riscv64 пока,  хотя движение есть
> > mipsel мертв
> > 
> > Что ещё?
> 
> armv7, но, видимо, 32-битные архитектуры не интересны.

Насколько я понимаю, зависит от железки. То есть решается вне общей процедуры.
Comment 11 AEN 2021-11-29 00:20:06 MSK
Дима, Глеб, делаем?
Ключевой элемент плана 2022.