Pull to refresh

Comments 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 вы можете без проблем запаковывать ваше приложение, написанное на этих язык. Обновление этого образа будет уже не таким сложным.

UFO just landed and posted this here

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

UFO just landed and posted this here

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


Я уже сам столкнулся с тем, что для 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.
Я про это. Слишком тонко я просто написал
Не слишком — я, например, распознал :-) Но откликов пока не было, так что — всё ещё очень ищем евангелиста!
Для откликов наверное все стесняются, «типа куда мне», ну как я например)
Sign up to leave a comment.