Как завести виртуальный интерпретатор и компилятор?
Хотелось бы попробовать организовать виртуальное окружение, в котором будут определены предустановки (интерпретаторы и компиляторы). Не получается задать permissions для этого environment-а. Чтобы все что происходит внутри не затрагивало все что снаружи. Я так понял нужны какие-то конфиги типа .bashrc файлов.
Что у меня есть?
Я подключил codemirror. Допустим подключаю xterm.js, который клонирует все возможности terminal-а, и задал правило permission-ов. Но теперь встречаюсь с новой проблемой - атомарность. Пожалуй нужно создавать сессии пользования программой. Каждый раз при получении пакета с указаниями создавать новое временное окружение, выполнить, вернуть результат и закрыть сессию, то есть подчистить (rollback или деструкция) А можно вообще тупо удалять папку с окружением. И вообще как такое делается? Не изобретаю ли я колесо?
P.S: Пока не придумал, как будет происходить передача команд в терминал
В голове лишь:
1. Создание файла с расширением языка программирования (env***/code.py)
2. Выполнение
3. Grab результата с bash. Вот тут я не понимаю как сделать граб.
А у докера есть light версия, чтобы запускать его и после окончания сессии reset делать? И как вообще связать его с моими app-ками? Никогда не юзал доккер, но всегда думал что это некий инструментарий (просто виртуальная машина-контейнер) программиста. Если бы вы смогли пояснить как это все должно функционировать, был бы очень благодарен.
Правильно, считайте docker виртуальной машиной обычной.
Как у любой виртуальной машины у него есть "reset".
Связывается с внешним миром как обычная виртуальная машина + свои механизмы проброса ресурсов.
Online-редактор чего? (лимит моих вопросов скоро закончится :))
Вообще docker вам подойдёт для этого вполне себе ... он довольно легковесный в сравнении с полноценными виртуальными машинами.
1. Сделайте свой онлайн редактор просто чтобы он работал как обычный сайт
2. Запакуйте его в docker (сделайте свой Dockerfile)
3. По запросу пользователей создавайте контейнеры по вашему Dockerfile и вешайте контейнеры на свои домены третьего уровня (по имени пользователя например)
Артем Советников, Кажется вы мне помогли. Но я не уверен, нужно изучить docker. В общем хотел организовать проверку кода (Как contester PCMS на ACM олимпиадах) с выводом результата, и как бы результат эмулировать в браузер. Писать код в редакторе(codemirror.js) отправлять его на сервер, запустить сессию виртуальной машин, интерпретация либо компиляция, получение результата от виртуальной машины, отображение у клиента в браузере. После окончания пользования - закрывать вирт машину (Или повесить time to life, чтобы по истечению времени закрывать сессию автоматически). Тоже самое что предлагает repl.it, но только с проверкой.
В целом спасибо большое. Буду углубляться в доккер.