Ответы пользователя по тегу Docker
  • Nginx(хост) + Virtulhostы PHP FPM (разные версии в Docker ) +Mysql (хост)?

    @viiy
    Linux сисадмин \ DevOps
    Зачем это вы пытаетесь сделать не совсем понятно.
    У каждого инструмента свое назначение.
    Docker - для stateless сервисов, которые не хранят состояние, не перезаписывают внутри себя файлы, которые умирают, и никто не переживает, что внутри чтото потерлось. Идеальное применение докера - для микросервисов. Этакий сервис который работает, что-то потихому делает в фоне, а как помрет, его перезапустят и он продолжит работать. Идеально когда внутри один сервис и других нет.
    В вашем случае php в докер пихать не очень целесообразно. web-сервер в докер пихать тоже не рекомендуется. Потому как эта связка статичная, ее нельзя ломать, потому как сломается все. Хранить сайты внури докера вобще плохое решение.
    Мне кажется, из той инфрмации что вы предоставили, вам лучше рассмотреть вместо докера какую-либо виртуализацию в виде lxc, kvm.
    Mysql с докере вобще криминал, никто это не рекомендует, т.к база должна жить всегда, дисковую подсистему использовать по максимуму, и причин ее изолитьвать в докере практически не бывает. Проще поднять еще один инстанс на том же сервере или другом.
    Оговорочка. Можно оживить связку nginx+fpm+сайт в контейнерах. Но целесообразно это когда у вас есть какой то внешний условный nginx, который прокидывает proxy-pass-ами на сайтики нижележащего уровня. Но тут нужна серьезная обвязка в виде оркестрации микросервисов (docker-swarm минимум, kubernates), service discovery какой то (consul, etcd). Но для простых задач с сайтиками это просто убийственно сложно и не нужно.
    Если опишите задачу более подробно, будет легче дать совет.
    Ответ написан
    Комментировать
  • Для чего нужен Docker?

    @viiy
    Linux сисадмин \ DevOps
    Представьте что нет никакой ложки докера.

    1) Есть одна физическая машина. Вы устанвливаете софт, разные приложухи, базы, web сервера, заходят тестовые юзеры, что-то запускают. Первая проблема - вы не понимаете кому что надо, кто владелец файлов, приложух, зачем висят демоны и кто за это ответственнен. Как выход, вы решаете это разделить на виртуалки.

    2) У вас есть физическая машина + на ней виртуалки. Вы выделяете под каждую задачу свою виртуалку, там сидят отдельные пользователи, вы навели какой то порядок. Появляется задача - пользователи хотят php 6, а его нет, хотят python3, а его нет, хотят Mongo, а она старой версии. Вы обновляете репозитарии, качаете новые пакеты, ставите, часть пользователей довольны, часть нет - им нужна старая версия какая была. Упс!

    3) Одна физическая машина + еще больше виртуальных машин. Вы разделили всех пользователей так, чтобы никто не дрался за версии софта, если нужен php6 - иди на эту машину, нужен php5 - вот на эту. Все счастливы, но появляются разработчики, которые говорят буквально так - "а у меня на рабочей машине все работает, я перенес все как было на виртуалку, а у меня появляется ошибка missing library libXXX.so.X". И вы понимаете что вам остается только создать полную копию машины разработчика, чтобы софт поехал на этой виртуалке без ошибок... И тут появляется Docker! :)

    4) Docker решает именно эту проблему. Вам не нужно заботится о софте который установлен на сервере/виртуалке. Вы просто берете и переносите софт со всеми "кишками" на другой сервер и он просто работает. Работает за счет того, что все "кишки" это слои файловой системы нанизанные как бисер друг на друга. Дополнительно решается проблема свободного места, т.к слои многократно переиспользуются контейнерами, если вам нужен php + одна библиотека, а другому php + другая библиотека, вы используете (грубо говоря) слой php, а для дополнительной библиотеки делаете отдельный слой, одновременно другой человек делает над php другой слой и вы не деретесь между собой и не видите чужих библиотек. Это грубо и скорее всего ради одной библиотеки никто новый слой не делает, делают слой пожирнее.

    Все запущенные процессы Docker помещает в изолированную среду процессов, файловой системы и сетевого стека. Есть много особенностей по работе с Docker, т.к он предполагает, что в одном контейнере вы запускаете один процесс. Если вам нужно запустить целый набор демоном, тут появляются проблемы, нужно писать шелл-скрипт, который все это поднимет в контейнере. Так же есть особенности по сети, файловой системе. Для кого то Docker спасение и решение всех проблем, но я как сисадмин от этого всего не в восторге.
    Ответ написан
    15 комментариев