Сегодня, когда все больше компаний используют облачные сервисы, идея о том, чтобы перенести свои приложения или сайты на виртуальные серверы не кажется чем-то столь необычным. Однако отрасль облачных вычислений сейчас находится на пороге революции, считает Брайан Кантрил, бывший инженер Sun Microsystems и Oracle, который теперь занимает позицию директора по технологиям инфраструктурного проекта Joyent. Он считает, что виртуальные машины вскоре уступят свое место программным контейнерам, которые станут более эффективным инструментом для работы с современными приложениями.

Благодаря таким компаниям, как Google, Docker и другим, этот процесс уже запущен. Процесс может еще ускориться благодаря появлению независимой организации, занимающейся развитием идеи контейнеров — Cloud Native Computing Foundation, участниками которой являются Cisco, eBay, Goldman Sachs, IBM, Intel, Joyent, Twitter и, конечно, Google и Docker. Как видно, развитием технологий контейнеров занимается множество разных компаний, и по словам представителя Google Грейг МакЛаки (Crag McLuckie), новая организация ставит перед собой цель по «гармоничному объединению» всех этих технологий.

Новую организацию поддерживает и некоммерческой Linux Foundation, занимающейся развитием соответствующей открытой операционной системы (еще фонд развивает похожий проект Open Container Initiative, OCI). Разница заключается в том, что OCI работает над созданием общей спецификации контейнеров — стандарта, который позволит создавать контейнеры, работающие на всех компьютерах или в любых облачных сервисах —, а Cloud Native Computing ставит перед собой более масштабную цель, намереваясь объединить огромное количество инструментов для работы с контейнерами.

К примеру, Google предлагает инструмент под названием Kubernetes, который позволяет работать с контейнерами на большом количестве машин, другие компании также разрабатывают подобные сервисы. Новый фонд хочет сделать так, чтобы все эти инструменты могли работать вместе, и одновременно повысить их качество. Google передал код Kubernetes организации, другие компании также открывают код своих продуктов.

Kubernetes и так был open source-проектом, но теперь над его развитием смогут работать не только сотрудники Google, но и профессионалы из других компаний, создающих похожие проекты. И это то, что нужно, считает обозреватель Wired Кейд Метц — мощь идеи контейнеров станет по-настоящему заметной, когда работать над ней будут все игроки сообща.

Комментарии (27)


  1. kai
    31.07.2015 14:39
    +5

    Интересно, кто-нибудь использует Docker в продакшн без проблем и костылей?


    1. dborovikov
      31.07.2015 14:56

      А расскажите про свои проблемы. Я как раз планирую внедрять докер.


      1. kai
        31.07.2015 15:36

        Я на макбуке пробовал. Не самый лучший вариант, т.к. нативной версии нет, все работает через виртуалку с линуксом.

        Сходу docker-compose (бывший fig) — не работает. Ошибка в ssl, нужно использовать ключ-костыль. Приходится качать rc2 версию.

        Потом я пробовал создавать несколько связанных с собой контейнеров, так и не получилось их запустить, что-бы все работало гладко и без проблем. Например, запускаю их через compose, пытаюсь сделать exec bash через docker — ничего не выходит. В «compose ps» они в состоянии «run», в «docker ps» в состоянии «reboot».

        Я сейчас смотрю в сторону vagrant, он толще, но привычней и стабильней.


        1. dizews
          31.07.2015 16:00

          запускал docker-compose для одного проекта, реализовал связку с ним другого проекта, всё взлетело на раз. Использовал boot2docker.
          в то время как с vagrant-ом промучался, а когда завелось он регулярно ложился.


        1. dborovikov
          31.07.2015 16:01

          Попробуйте докер раннить внутри вагранта. Все-таки основная целевая система докера — это линукс, все остальное по стольку по скольку.


        1. l0rda
          02.08.2015 04:41

          Использую docker-compose в продакшене, никаких проблем. Поднял свой приватный реестр.


    1. halyavin
      31.07.2015 18:43

      Судя по этой статье, нет: sirupsen.com/production-docker.


    1. cy-ernado
      31.07.2015 19:15
      +5

      Обычно докер запускают на продакшене не на макбуках.

      iron.io, например


    1. zw0rk
      01.08.2015 02:09

      Я использую. Проблем не обнаружено пока.


    1. Suvitruf
      01.08.2015 09:18

      Для некоторых подсистем используем. К примеру, метрики неплохо в контейнере запускать (Graphite + Grafana и все-все-все). Если же вы используете Kubernetes, то у вас там всё в контейнерах )


    1. shuron
      01.08.2015 12:05

      Я пользуюсь… Кстати в гуглклауде…
      «Костылей» меньше чем раньше… Могу протестриорвать всю связку на домашнем сервере или насвоем лэптопе.
      Есть путь миграции старой легаси системы посредством распиливаниай на микросервисы и запихиванией а в контеэнреы и постепенной замене отдельных контеэров на новые сервицы…
      Общая продуктивность возрасла… Но конечно имело начальный инвест.


    1. farcaller
      02.08.2015 11:36

      Поднял кластер kubernetes с хранилищем на ceph. Ну оно работает, конечно, но постоянно всплывают интересные вещи, k8s — он большой и сложный.


    1. MrFrizzy
      02.08.2015 16:30

      Вот статья про всевозможные костыли в проде


  1. almuerto
    31.07.2015 14:59
    +1

    Тоже интересно знать, использует ли кто докер в продакшн. Контейнер с коллаборейшн сервером в тесте сейчас.


    1. dos
      31.07.2015 17:57
      +1

      Есть небольшой опыт. Используем под выдачу демо версий нашего ПО потенциальным клиентам. На текущий момент всего лишь 30 контейнеров (максимум было ~40) на одной машине на btrfs диске с компрессией. Очень удобно быстро создать изолированную демку по запросу и присвоить на неё домен третьего уровня — все занимает до 10 секунд. Ещё классно, что при том что базовый образ весит ~2.5 GB, то общий объем 30 контейнеров не превышает сейчас 8.5GB. Работает все идеально. Написал свою систему запуска контейнеров «по требованию», если контейнер клиентом не используется, то он тушится (как на heroku). Пока доволен :)


      1. farcaller
        31.07.2015 18:39

        Ещё классно, что при том что базовый образ весит ~2.5 GB
        оставлю тут ссылку на вот этот замечательный базовый образ: registry.hub.docker.com/_/alpine


        1. dos
          31.07.2015 20:49

          Я имел ввиду под «базовым образом» не образ чистой ОС, а настроенный полностью контейнер с нашим софтом :) так то в качестве базового дистрибутива используем дефолтную Ubuntu :) Тем не менее спасибо за ссылку, посмотрю что это такое,


        1. pleha
          01.08.2015 22:37

          (привет) Ну для экспериментов классно. А вот много ли там софта есть в репо и в каком он состоянии, как говорят, «для продакшена»?


          1. farcaller
            01.08.2015 22:49

            Хорошо работает для своего софта который собирается в статический блоб — go, c++. Разворачивать из альпины мускуль смысла, наверно, мало.



  1. MrFrizzy
    31.07.2015 19:58
    +2

    Пообщался я на europython2015 с Mandy Waite — она делала keynote про kubernetes.
    Так вот,
    1) контейнеров много, просто docker стал стандартом де-факто.
    Сейчас google мержит свои наработки в runc и завязывается на стек docker. Но это в большей степени потому, что докер — это экосистема доставки в большей степени, чем запуска.
    2) контейнеры небезопасны (still yet). Долгое время небыло вообще спецификаций, сейчас есть rocket appc и новая opencontainers spec. Все остальное — читать код. И до сих пор нет ни одного документа по безопасности со списком всех возможных дыр хотя-бы для linux.
    Так что запускать можно только доверенный код.
    Вот моя выжимка из разных источников
    3) google использует docker вместе с kubernetes для запуска 10000 одинаковых воркеров равномерно по свободным ресурсам датацентра. То есть в изоляции особо нет необходимости. Могли бы подойти решения вроде cgroups и net namespace (утилита ip или готовая обвязка). Просто docker позволяет доставлять и запускать одинаковые образы и он уже написан…


    1. shuron
      01.08.2015 12:18

      Пункт 2) не не имеет того веса как его рисуют ИМХО.
      Ибо Контейнеры это не замена виртуалкам. В часности Докер это звено между виртуалками и пакетным менеджером. Докер имеет свойства и виртулаок и пакетных мэнеджеров, в новой смысловой комбинации.
      Например в оличии от пакетного мэнеджера у Докер контененра есть полная изоляция от другово контейнера. А так да как вы клиентам не даете использовать пакетный мэнеджер для дистрибудитива своих «аппов» так и с докером не будете… ;)


      1. MrFrizzy
        01.08.2015 12:38

        Проблемы две:
        — люди не понимают идею пакетного менеджера и тянут к себе непроверенные образы
        — docker уже используется для предоставления vm клиентам на общем хосте. По хорошему, нужно еще изолировать сам docker слоем выше него, но этого никто не делает.

        А изоляция между запущенными контейнерами и между контейнером и хостом не такая уж непробиваемая.

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

        Ну и почитайте саму статью — гиганты индустрии хотят заменить виртуалки на контейнеры. Для них это экономия ресурсов и оптимизация, для остального мира это может стать очередной модной технологией, в которой большинство не разбирается.
        Вот необдуманное использование этой технологии мне и не нравится =)


        1. Grunya_404
          03.08.2015 06:38

          Докер наверно слишком многогранен и это его проблема. Но это точно не вм, и замену им он не сможет обеспечить никогда. Скорее заполнит нишу между… где то я доклад смотрел на тему " о докере и его месте… " И там это очень четко было в диаграмму эвалюции вируализации вписано. Между железом и вм. Вроде от мелкософта видео было это в мск что то было у них.…

          А экономия то и юзерам тоже, сравните вес трёх dev env vm, все равно в чем работающих. и тот же дев env собранный из контейнеров. На порядок меньше, а главное удобней в разы. Если понимать что это за технология.

          Использую уже пол года в прод стек контейнеров, кроме БД сервисов, но скоро и их туда же, все это для одного php проекта с приличной аудиторией, развертываемого как на своём железе так и на облачных площадках. И так же благодаря контейниризации освоился в CI и CD. через tutum


        1. shuron
          04.08.2015 23:21

          гиганты индустрии сделают это какраз по умному. Не будет, к примеру, там на одной виртуалке контенеров разных клиентов, если это не безопасно…


          1. MrFrizzy
            04.08.2015 23:31

            После прочтения множества статей и общения с некоторыми разработчиками\админами у меня в этом есть некоторые сомнения. Есть облака, в которых контейнеры просто запускаются на хосте пачками. В лучшем случае рассматривают docker как замену openvz — запускают же в нее клиентов — почему бы и сюда не запустить?..

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


  1. rkononov
    01.08.2015 12:08

    Мы используем докер в продакшне, уже больше года(с версии 0.7.4), в принципе каждый новый релиз приходится «прикручивать костыли», но в целом они больше связаны с нашим специфическим вариантом использования докера (короткоживущие контейнеры, много параллельных контейнеров). API,storage, фронтэнды крутятся на CoreOS — тоже бывают проблемы но в целом все достаточно стабильно.
    Некоторые детали я описывал здесь — habrahabr.ru/post/247969