Как стать автором
Обновить

Комментарии 24

Никак не пойму зачем образ операционки в каждом имадже?

Этим достигается атомарность контейнера.

Он и так атомарен, если просто положить в него необходимые сошники.

Было бы интересно почитать подробнее. Расскажешь?

Ну рокетсайнс здесь нету. Бинарный исполняемый файл может быть двух видов: статически слинкованым или динамически. В случае статики никакие дополнительные библиотеки ему не нужны. И тогда докер файл может быть таким https://github.com/tianon/dockerfiles/tree/master/true В случае динамики — необходимо покопаться.


Вот так выглядят зависимости bash:


$ ldd /bin/bash
    linux-vdso.so.1 =>  (0x00007ffc731ea000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f3b391fa000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3b38ff6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3b38c2c000)
    /lib64/ld-linux-x86-64.so.2 (0x0000559c9ee28000)

Если вам нужен баш в докере, то в общем-то достаточно найти и положить эти сошники в образ, проверив, что у них самих нет зависимостей. Можно пойти более корректным, но сложным путем, собирая через configure&&make&&make install нужные зависимости. Это длиннее, но если есть CI решаемо. И главное повторяемо, поскольку инструкции у вас зашиты в CI. Тогда можно взять Alpine для базы.


Разумеется это сложно делать для большого, стороннего проекта. Например Nginx или Python. Но это отлично работает для всего, что написано на golang, поскольку у него в зависимостях часто вообще ничего нет. А собрав однажды базовый образ для php/python/ruby/java вы можете без проблем запаковывать ваше приложение, написанное на этих язык. Обновление этого образа будет уже не таким сложным.

НЛО прилетело и опубликовало эту надпись здесь

Хотя бы чтобы уменьшить количество случаев "а локально у меня работает", если у большинства разработчиков стоит Ubuntu.

НЛО прилетело и опубликовало эту надпись здесь

Даже в опросах на Хабре он ещё не победил, а только начинает проникновение со скрипом.


Я уже сам столкнулся с тем, что для php есть ppa под ubuntu для расширений, а для центоси альтернатива — сборка из исходников. Что-то мне кажется, для alpine тоже не будет готового пакета, хорошо если сам php из исходников собирать не потребуется.


Ну как сказать. Что у Docker есть проблемы со сборкой контейнеров (только навскидку: передача секретов, монтирование файлов с хоста в целях, например, кэширования, использования билд-онли софта) — не секрет. Стандартными средствами Dockerfile эти проблемы не решаются или решаются довольно коряво. Можно решить их, написав кастомную обвязку на любом языке для конкретных кейсов, можно что-то универсальное, можно пропатчить сам сборщик докера, можно ждать пока кто-то не сделает что-то из этого.

Локально как бы должен быть примерно тот же докер образ. Примерно, потому что отличие может быть например в том, что для интерпретируемых языков локально исходники проекта лучше подмонтировать как volume, а не копировать в образ.
Изучал месяц где-то Chef, теперь бегу от него волосы назад каждый раз когда слышу это слово.

Я на боевых серверах сейчас использую Alpine образы, к примеру архив PHP-FPM образа примерно 80Мb. Он же и выкатывается при релизе, никаких репозиториев.

Бинарные зависимости собираются из временного контейнера и потом экспортируются. Нужно это опять таки чтобы уменьшить размер образа.

Все верно, то что происходит в 1% случаев можно сделать руками, без Chef огородов.
Вот тогда-то и не нужно брать Chef.
А то получается, что делаем «hello world», берём для этого инструмент энтерпрайз уровня и потом волосы <вставить_что_они_делают_при_упоминании_шефа>

Но ближе к существу, мне действительно интересно, что не так с шефом, когда с ним начинаешь знакомиться. Что лично вам не понравилось?
Слишком большой порог вхождения. Плюс зачастую под него нет адекватных задач, так чтобы не получилось забивание гвоздей микроскопом, в отличие от того же Docker.

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

Нет, но теперь видели. Спасибо, клево!

Отличный инструмент, буду пробовать, как раз то, что было нужно)
P.S. по поводу Chef — мне тоже не нравится, я вот например Ansible люблю. Душу как то он сразу согрел, так и не могу от него отказаться. Хотя пробовал Chef/Puppet/SaltStack/Ansible.

У нас в планах поддержка Ansible, будем пробовать успеть до июля.

Тогда вообще будет супер. Будем ждать выступлений по поводу Ansible от нового вашего тех.евангелиста)
от нового вашего тех.евангелиста)

М? О чем речь?

Для dapp мы ищем уникального энтузиаста, который мечтает стать технологическим евангелистом. Если у вас есть реальный интерес в подобных инструментах, опыт в DevOps, управлении проектами и написании грамотных технических текстов — не откладывайте в долгий ящик и обязательно напишите нам на info@flant.ru.
Я про это. Слишком тонко я просто написал
Не слишком — я, например, распознал :-) Но откликов пока не было, так что — всё ещё очень ищем евангелиста!
Для откликов наверное все стесняются, «типа куда мне», ну как я например)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий