Puppet и Docker могут делать много одного и того же, но подходят к ним по-разному.
Puppet управляет файлами + пакетами + сервисами. (Называется trifecta).
Docker инкапсулирует двоичные файлы и файлы конфигурации внутри контейнера.
На момент написания этой статьи докер по-прежнему нестабилен и не должен использоваться в производстве. Многие из API, вероятно, будут изменены, пока не будет выпущена версия 1.0.
Даже когда docker действительно станет стабильным, преобразование каждого процесса и конфигурационного файла в контейнеры Docker будет большой задачей.
Puppet, с другой стороны, является стабильным продуктом и поставляется с целой экосистемой инструментов (heira, mcollective, facter, бритва). Эти инструменты могут быть реализованы быстро и не беспокоясь о поломке.
Я очень рекомендую следующие ресурсы.
Видео о том, как управлять стеками приложений с помощью Puppet
https://www.youtube.com/watch?v=KSo_mcJxFIA
Подкаст о том, как докер и марионетка могут работать вместе
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Статья в марионеточном блоге о том, как интегрироваться с докером
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Еще одна статья в блоге о сосуществовании кукол и докеров
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Кукольный модуль для взаимодействия с докером
http://docs.docker.io/use/puppet/
Незначительное исправление в терминологии devops. Devops - это больше методология разработки программного обеспечения, в которой разработчики и операторы взаимодействуют, чем какой-либо конкретный инструмент.
Обновить
В настоящее время моя компания использует как марионетку, так и докер. Вот отличная презентация на puppet conf 2014 о том, почему вы должны использовать puppet vs docker. Подарено Джеймсом Тернбуллом, бывшим работодателем марионеток и автором докерской книги.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Также хороший короткий видеоурок по докеру от sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Docker Pros:
- Может быстро раскрутить экземпляр
- Легче учиться, чем кукольный
- Легко сделать 0 простоя
Докер Минусы:
- Контейнеры имеют ограничение 10 ГБ при использовании бэкэнда devicemapper
- Небольшие изменения конфигурации занимают много времени, чтобы перестроить контейнер
- Затраты денег на использование реестра Docker, такого как hub.docker.com, quay.io (Самостоятельный реестр Docker очень глючит и не имеет графического интерфейса пользователя)
- Нет правильной системы инициализации. Некоторые приложения не играют хорошо.
- Нет точного контроля над сетью
- Приложения, которые требуют субоболочек (глядя на вас RVM + ruby), очень сложно правильно работать
- Не может управлять хостами Windows, SLES или другими менее популярными операционными системами.
- В настоящее время оркестровка докеров очень молода.
- В настоящее время не может установить ваш /etc/resolv.conf во время сборки
- Различные ошибки, которые мы должны смонтировать /etc /localtime и /dev /urandom, чтобы отобразить в каталоги localtime и urandom хостов.
- Производительность не такая быстрая (несмотря на все утверждения, что докер должен быть на 99% быстрее голого металла, иногда он на 30% медленнее, чем другие машины).
- Небольшие контейнеры по-прежнему имеют сотни мегабайт служебных данных. Наши контейнеры все несколько гигабайт.
Кукольный Плюсы:
- Легко масштабируется
- Работает с существующими серверами (windows, linux, sles)
- Быстро внести небольшие изменения
- Сильное сообщество других кукольных пользователей и модулей
- Стандартизированный API для установки пакетов на всех платформах
Кукольные Минусы:
- Большие инфраструктуры становятся очень сложными
- Условные зависимости модуля создают код spagetti
- Более тяжелый вес
В настоящее время мы используем puppet для обеспечения наших док-контейнеров. Док-контейнеры используются для сборок jenkins и уничтожаются после каждой сборки. Это работает хорошо, и дает нам согласованную среду. Это означает, что нам нужно написать код только один раз, а затем перестроить машины ubuntu, sles и centos. Восстановление контейнеров занимает от 15 до 30 минут и все еще выполняется вручную. Докер отлично подходит для быстрого тестирования виртуальных машин,
Короче говоря, Puppet отлично справляется с управлением существующей инфраструктурой. Докер хорош, если у вас есть зеленое поле, которое на 100% Linux, с технологическим стеком, который может быть заключен в небольшие эфемерные экземпляры. Хотя некоторые функции перекрываются, они не являются взаимоисключающими.