From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,FUZZY_XPILL, RP_MATCHES_RCVD autolearn=no autolearn_force=no version=3.4.1 To: sisyphus@lists.altlinux.org References: From: "Michael A. Kangin" Message-ID: <85f6cce0-da05-48ff-8d88-b84ba9cabb03@complife.ru> Date: Sun, 18 Mar 2018 21:59:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [sisyphus] =?utf-8?b?STog0YHQuNGB0YLQtdC80LAg0LfQsNCz0YDRg9C30Lo=?= =?utf-8?q?=D0=B8_CoLaBoot?= X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Mar 2018 20:59:27 -0000 Archived-At: List-Archive: List-Post: С позволения Павла запощу сюда, будущей документации ради :) On 03/18/2018 07:46 PM, Pavel Vainerman wrote: > Пытаюсь разобраться как создавать образы. > У меня правда p8, но colaboot-utils я себе собрал нормально. Я тоже всё делал под P8. Сорри, мне сейчас после долгой возни с этим проектом многие вещи кажутся сами-собой разумеющимися и я еще не добрался их задокументировать по-человечески. > Столкнулся с тем, что examples не работают. > > В sources.list прорвались локальные адреса. > rpm [p8] http://192.168.123.1/ALTLinux p8/x86_64 classic > rpm [p8] http://192.168.123.1/ALTLinux p8/x86_64-i586 classic > rpm [p8] http://192.168.123.1/ALTLinux p8/noarch classic Это из кастомизированных конфигов apt, /usr/share/doc/colaboot-utils-0.5/examples/docker/apt/ в частности examples/docker/apt/sources.list Мне для сборок нужно было заюзать локальный репозитарий, чтобы он был доступен (только на время сборки!) внутри докер-контейнеров, и я выкрутился следующим образом: сделал локальный репозитарий доступным по http, и нарисовал функцию APT-INIT в docker-functions, которая копирует эту копию апт-конфига внутрь контейнера, и дальше работа идёт с этой копией. А после сборки функция APT-CLEAN вычищает эти временные конфиги из контейнера, и в итоговом имидже они оставаться не должны. Если такая схема работы не подходит, попробуйте модифицировать APT-INIT под свои условия. Учитывая, что прочие APT-функции хотят сейчас видеть конфигурацию в /usr/local/share/apt, может стоит делать симлинк на настоящую конфигурацию. > В docker недоступные (по крайней мере я не нашёл на > https://hub.docker.com/) образы > > altlinux-p8-clb-base > altlinux-p8-clb-xxxx Да, я их не заливал. -base образ я готовил методом импорта: в mkimage-profiles нашёл более-менее близкую мне цель сборки, ve/systemd-bare, и собрал там с минимальными модификациями: В conf.d/ve.mk: ve/clb: ve/systemd-bare use/deflogin/desktop @$(call add,BASE_PACKAGES,iconv htop) получившийся ~/out/clb-latest-x86_64.tar импортировал в докер как base image (https://docs.docker.com/develop/develop-images/baseimages/#create-a-full-image-using-tar): # docker import -c 'CMD ["/bin/bash"]' clb-latest-x86_64.tar altlinux-p8-clb-base Вот, как-то так. А остальные образы уже изготавливались с помощью .docker-make файлов. Докеровский нативный метод с помощью dockerfile меня не удовлетворил: там создаётся какое-то адское количество промежуточных образов, что для CLB совершенно не нужно (или файл совершенно теряет в читабельности, если пытаться упихнуть все заклинания в одну строчку). Готовых рецептов по мержу я не нагуглил, свой написать порывался, но решил лучше не лезть куда не надо. :) И, эмулировав несколько функций и дописав свои, решил делать контейнеры с помощью визуально похожих на dockerfile'ы обычных скриптов. Базовый образ в виде .tar я тоже залил на всякий случай: http://mak.complife.ru/colaboot/clb-20180220-x86_64.tar > > Хотелось бы больше примеров и документации ) Ну вот со временем наработается :) Сейчас выложил всё, что у меня было. > Я попробовал просто как пример подправил образ на тот который у меня > есть. Запустил (по root) и получил ошибку Я очень подозреваю, что тут нужен докер, настроенный на использование overlayfs: https://docs.docker.com/storage/storagedriver/overlayfs-driver/ Обратите внимание, там у overlayfs нелюбовь к XFS, отформатированной без d_type=true - криво файлы стираются. Чтобы не переформатировать всё и вся, можно подсунуть в /var/lib/docker специально приготовленный файл-имидж с ext4 или правильно-отформатированной xfs. > > [root@pvbook mm]# docker2squash fotengauer/altlinux-p8 > Looking docker objects for "fotengauer/altlinux-p8"... > Selected object: > sha256:f6ab513a2bef9d8a624e8dbaf429f5cd29e204adf160d1f871cd4e7d43f05e28 > Type: image; Name: fotengauer_altlinux-p8 Кстати, я хоть и попытался превратить / в _, но не проверял, как в итоге получится. Обратите внимание на имена создаваемых файлов. > Can't locate UpperDir for object Очевидно как раз из-за отсутствия overlayfs. docker inspect fotengauer/altlinux-p8 должен вернуть значения для GraphDriver->Data->UpperDir В принципе, для diff (и может chain) режима можно наверное будет сделать, чтобы использование других сторадж-драйверов тоже понималось, но для merged оно точно будет критически-необходимым.