Перейти к содержимому
ProgramCrafter

Полу-Docker

Рекомендуемые сообщения

Ваша программа требует особую версию какой-нибудь библиотеки и мешается другим программам в системе? Опасаетесь, что необходимые библиотеки потеряются в истории? Надо разворачивать одно и то же окружение на много опенкомпов?*

Представляю вашему вниманию программу, позволяющая собрать программу и все её библиотеки в один файл!

 

wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/enum-files.lua

Программа, сохраняющая "образ" файловой системы компьютера, на котором запущена.

Чтобы не сохранять образ всей OpenOS, сохраняется только разность между корневой папкой и дискетой с чистой OpenOS. Путь к этой дискете необходимо прописать на строке 6.

Образ сохраняется по пути /home/archive.bin.

wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/unpack-files.lua

Программа, распаковывающая образ поверх файловой системы. Осторожно, не открывайте зловредные архивы, потому что они могут затереть даже EEPROM (указав путь для распаковки /dev/eeprom)!

wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/container.lua

Сам полу-докер - скрипт, позволяющий запустить программу с подменой её файловой системы на образ. Так как OpenOS не записывается в образ, этой программе тоже необходимо указать путь к дискете с чистой OpenOS.

Подменяется только io.open - to be fixed soon, потому что из-за этого могут грузиться неправильные версии библиотек.

Образ является read-only - неясно, каким образом фиксить это.

 

 

*Kubernetes (для управления множеством контейнеров) в комплект поставки не входит.

Изменено пользователем ProgramCrafter
доработана загрузка модулей в контейнере

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, ProgramCrafter сказал:

Подменяется только io.open - to be fixed soon, потому что из-за этого могут грузиться неправильные версии библиотек.

Теперь полу-докер подменяет не просто io.open, а всю библиотеку filesystem и package - а это значит, что теперь загрузка модулей через require происходит внутри контейнера, как и должна!

 

Минус - некоторые программы могут крашиться. Баг-репорты принимаются, хоть здесь, хоть на гитхабе, хоть на гитлабе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Новая версия архиватора (enum-files.lua) спрашивает для каждого файла, включать его в архив или нет.

 

Старую версию скрипта можно скачать здесь: https://gitlab.com/ProgramCrafter/lua-utils/-/raw/82d66b04b02118499cc577344fa4de924c177105/half-docker/enum-files.lua.

Хотя смысла в этом немного - чтобы добавить в архив всё, достаточно запустить yes | enum-files.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавлен скрипт save-same-files:

wget -fq https://raw.githubusercontent.com/ProgramCrafter/lua-utils/main/half-docker/save-same-files.lua

Запаковывает в контейнер только те файлы, которые были в старой версии архива. Можно использовать для того, чтобы копировать только нужные файлы с рабочего компьютера и не раздавать оттуда все секреты и печеньки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Контейнер был обновлён!

Новая фича: правильная работа библиотеки process, /dev/null и /dev/full.

 

Чтобы запустить команду с перенаправлением, можно пользоваться sh. Если sh не работает, убедитесь, что у вас установлена самая новая OpenOS (например, проверьте ту же команду в хост-системе). Похоже, что шелл не работал минимум 2 года (требовал первым аргументом таблицу, которую невозможно передать из терминала), и фикс был всего три месяца назад.

 

Запись файлов внутри контейнера всё ещё не поддерживается.

/home # container sh "echo 1 >/dev/null"
/home # container sh "echo 1 >/dev/full"
/home # container ls /dev
components  eeprom  eeprom-data  null  random  zero
/home # container sh time "set >/dev/null"
real    0m0.250s
cpu     0m0.012s
/home # container save-same-files
/home/container.lua:155: unsupported open type: wb:
stack traceback: ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...