Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Контейнерный дистр

Собственно идея запилить собственный Not Invented Here дистр, где домики будут набигать и можно будет грабить корованы. Суть токова:

- контейнеры у нас immutable и пересоздаются с пустого места. То есть менеджмент пакетов и configuration management не нужны в рантайме (внутри контейнера), только на этапе билда (на билд-машине/внутри билд-контейнера).
- приложение запускается не под рутом и либо вообще никуда не пишет (кроме /tmp и stdout/stderr/syslog) либо пишет в /var/app. В частности, хакнутое приложение не может перезаписать само себя.
- "Тонкие" пакеты на основе strace. В идеале мы перепаковываем апстримовые бинарники, т.е. сами ничего не билдим (ну кроме никса где концептуально, как я понял, мы билдим всегда). Например, мы разбиваем пекедж node на node-xruntime, node-xdevel, node-xfoo и node-xunused. С таким рассчетом, что все "лишние" файлы и зависимости, не обнаруженные strace, идут в -xunused и в случае чего пекедж можно полечить, установив пустой "метапекедж" node, у которого все -xfoo в зависимостях. Например в арче у openssl есть зависимость от перла, которая в 99% случаев не используется. В результате "официальный" node устанавливает 300+ МБ зависимостей, когда нужно ~60.
- Важно, что мы стараемся ничего не ломать - например, utf8 locale, DNS и контейнерный PID 1 требуют особого внимания
Tags: programming, vz, прожектёрство
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments