1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-smith

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
SHA
Loading...
README.md

Smith — микроконтейнерный билдер

Что такое smith?

Smith — это простая утилита командной строки для сборки микроконтейнеров из пакетов rpm или образов oci.

Принципы микроконтейнера

  1. Микроконтейнер содержит только процесс, который будет запущен, и его прямые зависимости.
  2. У микроконтейнера есть файлы без пользовательского владения или специальных разрешений, кроме исполняемого бита.
  3. Корневая файловая система контейнера должна быть доступна только для чтения. Все записи из контейнера должны производиться в каталог /write. Любой уникальный конфиг, который понадобится отдельному экземпляру контейнера, должен быть помещён в каталог /read. Эфемерные файлы, такие как файлы pid, могут быть записаны в /run.

Сборка и запуск smith

Вы можете собрать и запустить smith двумя способами:

  • как Docker-образ;
  • как бинарный файл.

Оба метода описаны ниже, но рекомендуется использовать Docker, так как это самый простой и удобный вариант.

Smith, основанный на Docker

Зависимости

— Docker.

Метод

  1. Клонируйте smith:

    git clone https://github.com/oracle/smith.git

  2. Соберите Docker-образ smith, используя предоставленный Dockerfile, при необходимости добавив свой собственный docker-repo-id к тегу:

    sudo docker build -t [<docker-repo-id>/]smith .

  3. Настройте псевдоним (или скрипт) для запуска smith из командной строки:

smith(){
    sudo docker run -it --rm \
    --privileged -v $PWD:/write \
    -v cache:/var/cache \
    -v /tmp:/tmp \
    -v mock:/var/lib/mock [<docker-repo-id]/smith $@
}

Теперь вы сможете начать сборку микроконтейнеров (см. ниже).

Бинарный smith

wercker status

Сборка может быть выполнена через Makefile:

make

Зависимости

Сборка

— Docker; — Go.

Чтобы установить go, запустите sudo yum install golang-bin или sudo apt install golang-go, в зависимости от ситуации.

Go-зависимости включены в vendor-директорию.

Выполнение

Для сборки из RPM smith требует: — mock.

Mock может иметь проблемы с дистрибутивами, отличными от RPM.

Если у вас возникли проблемы с установкой или запуском smith нативно на дистрибутиве, отличном от RPM, лучше всего собрать его и запустить в Docker-контейнере (см. выше).

Mock можно установить на Debian/Ubuntu с некоторой осторожностью (см. ниже). В частности, вам нужен как минимум mock 1.2. Версия 1.1.X не будет работать, потому что флаг -r не поддерживает abspath к файлу конфигурации mock. Помните, что ваши сборки smith всё ещё могут завершиться неудачно.

Специфические инструкции для Debian/Ubuntu (Здесь живут драконы):

sudo apt install mock createrepo yum

# Fedora rawhide chroot (который mock использует по умолчанию) не работает с
# Debian, поэтому укажите /etc/mock/default.cfg на EPEL 7 (6 на Ubuntu):
sudo ln -s /etc/mock/epel-7-x86_64.cfg /etc/mock/default.cfg 
# rpm на Debian имеет патч к макросам, которые портят mock, поэтому отмените его. Обратите внимание,
# что обновление вашей ОС иногда сбрасывает этот файл, и вам придётся снова запускать эту команду.
sudo sed -i 's;%_dbpath\t.*;%_dbpath\t\t%{_var}/lib/rpm;g' /usr/lib/rpm/macros
# на debian/ubuntu по какой-то причине yum пытается установить пакеты для
# нескольких archs, поэтому необходимо обновить раздел yum.conf в
# default.cfg, чтобы предотвратить это. Если вы переключитесь на другой default.cfg, вам
# возможно, придётся сделать это снова.
sudo sed -i '/\[main\]/a multilib_policy=best' /etc/mock/default.cfg

Независимо от используемого дистрибутива убедитесь, что ваш пользователь является членом группы mock:

$ groups

Если ваш пользователь не является членом группы mock, добавьте его:

$ usermod -aG mock <your_username>

В Oracle Linux отредактируйте /etc/mock/site-defaults.cfg и добавьте:

config_opts['use_nspawn'] = False

Установка smith

Установка может быть выполнена через Makefile:

sudo make install

Использование smith

Чтобы использовать smith, просто создайте: Создание микроконтейнеров

Для создания контейнера «hello world» с помощью smith:

  1. Создайте новый каталог и перейдите в него:
mkdir cat
cd cat
  1. Создайте файл smith.yaml со следующим содержимым:
package: coreutils
paths:
- /usr/bin/cat
cmd:
- /usr/bin/cat
- /read/data
  1. Создайте каталог rootfs. Smith поместит содержимое каталога ./rootfs в корневой каталог образа.

mkdir rootfs

  1. Создайте каталог read в rootfs:

mkdir rootfs/read

  1. Создайте файл data в каталоге rootfs/read со следующим содержанием:

Hello World!

  1. Вызовите smith без параметров:

smith

Ваш образ будет сохранён как image.tar.gz. Вы можете изменить имя с помощью параметра:

smith -i cat.tar.gz

У smith есть несколько других опций, которые можно просмотреть с помощью "--help":

smith --help

Типы сборки

Smith может собирать из локальных rpm-файлов или репозиториев. Вы можете изменить конфигурацию yum, изменив ваш /etc/mock/default.cfg.

Smith также может создавать непосредственно из oci-файлов, загруженных через команду download, или из oci напрямую из репозитория docker. Просто укажите это в вашем smith.yaml как package, например:

package: https://registry-1.docker.io/library/fedora
paths:
- /usr/bin/cat
cmd:
- /usr/bin/cat
- /read/data

Чтобы создать Smith непосредственно из oci, команда Docker немного отличается:

smith(){
    docker run -it --rm \
    -v $PWD:/write \
    -v tmp:/tmp vishvananda/smith $@
}

Расширенное использование

Более подробные инструкции по созданию контейнеров см.:

Загрузка

Вы можете загрузить свой образ в репозиторий docker:

smith upload -r https://username:password@registry-1.docker.io/myrepo/cat -i cat.tar.gz

Изображения будут загружены в тег latest. Вы можете указать альтернативное имя тега, добавив его после двоеточия:

smith upload -r https://registry-1.docker.io/myrepo/cat:newtag

Он автоматически загружается в реестр-1.docker.io с использованием типов носителей docker. В противном случае он пытается загрузить с использованием типов носителей oci. Если вы хотите загрузить в частный реестр docker версии 2, который не поддерживает типы носителей oci, вы можете использовать переключатель -d:

smith upload -d -r https://myregistry.com/myrepo/cat -i cat.tar.gz

Вы можете указать имя тега для загрузки, добавив его к имени.

Скачивание

smith также может загружать существующие образы из репозиториев docker:

smith download -r https://registry-1.docker.io/library/hello-world -i hello-world.tar.gz

Они будут преобразованы в tar.gz oci макеты. Будет загружен тег latest. Чтобы загрузить альтернативный тег, добавьте его после двоеточия:

smith download -r https://registry-1.docker.io/library/hello-world:othertag

Вклад

Smith — это проект с открытым исходным кодом. Подробности см. в CONTRIBUTING.md.

Oracle благодарит сообщество за вклад в smith.

Как связаться

Лучший способ связаться — Slack.

Нажмите здесь, чтобы присоединиться к рабочему пространству Oracle Container Tools (https://oraclecontainertools.slack.com).

Затем присоединитесь к каналу Smith (https://oraclecontainertools.slack.com/messages/C8BKS9HT5).

Лицензия

Copyright (c) 2017, Oracle and/или её филиалы. Все права защищены.

Smith имеет двойную лицензию в соответствии с Универсальной Разрешительной Лицензией 1.0 и Apache License 2.0.

Подробности см. в LICENSE.txt.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Smith — это инструмент для создания микроконтейнеров, разработанный корпорацией Oracle с использованием Golang. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-smith.git
git@api.gitlife.ru:oschina-mirror/mirrors-smith.git
oschina-mirror
mirrors-smith
mirrors-smith
master