Лялька та докер можуть робити багато одних і тих же речей, однак вони підходять до них по-різному.
Лялька управляє файлами + пакетами + послугами. (Називається трифекта). Docker інкапсулює бінарні файли та файли конфігурації всередині контейнера.
На момент написання цього документа докер ще нестабільний і його не слід використовувати у виробництві. Багато API можуть бути змінені до випуску версії 1.0.
Навіть коли докер стає стабільним, буде великим завданням перетворити кожен процес та конфігурувати файл у контейнери докера.
Лялька, з іншого боку, є стабільним продуктом і постачається з цілою екосистемою інструментів (heira, mcollective, facter, бритва). Ці інструменти можна реалізувати швидко та без побоювання, що речі будуть зламані.
Я б дуже рекомендував наступні ресурси.
Відео про те, як керувати стеками додатків за допомогою лялечки
https://www.youtube.com/watch?v=KSo_mcJxFIA
Підкаст про те, як докер та лялька можуть працювати разом
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Стаття про ляльковий блог про те, як інтегруватися з docker
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 - це скоріше методологія розробки програмного забезпечення, де розробники та операції співпрацюють, ніж будь-який конкретний інструмент.
Оновлення
В даний час моя компанія використовує як лялькову, так і докерську. Ось чудова презентація, проведена на ляльковому конф-2014, про те, чому б ви використовували ляльку проти докера. Дано Джеймсом Тернбуллом, колишнім роботодавцем лялькових робіт та автором докерної книги.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Також хороший короткий відеоурок про докер, наданий sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Плюси докера:
- Може швидко розкручувати екземпляр
- Легше вчитися, ніж ляльковий
- Легко зробити 0 простоїв
Мінуси докера:
- У контейнерах обмежено 10 ГБ при використанні бекенда devicemapper
- Невеликі зміни конфігурації потребують тривалого часу, щоб відновити контейнер
- Витрачаєте гроші на використання докерного реєстру, наприклад hub.docker.com, quay.io (реєстр докерів, що розміщений самостійно, надзвичайно баггі та не має gui)
- Немає належної системи init. Деякі програми не грають добре.
- Немає тонкозернистого контролю над мережею
- Програми, які потребують передплати (дивлячись на вас RVM + ruby), дуже складні, щоб правильно працювати
- Не вдається керувати хостами Windows, без SLES або іншими менш популярними операційними системами
- В даний час докерська оркестрація дуже молода.
- Наразі не можна встановити /etc/resolv.conf під час створення
- Різні помилки, які ми маємо встановити / etc / localtime та / dev / urandom, щоб відобразити каталоги у хості localtime та urandom.
- Продуктивність не така швидка (незважаючи на всі твердження, що докер повинен бути на 99% швидкістю з чистого металу, іноді на 30% повільніше, ніж у інших машин).
- Невеликі контейнери все ще мають сотні мегабайт накладних витрат. Наші контейнери - це всі кілька гігабайт.
Плюсові ляльки:
- Легко масштабувати
- Працює з існуючими серверами (Windows, Linux, sles)
- Швидко вносити невеликі зміни
- Сильна спільнота інших користувачів ляльок та модулів
- Стандартизований API для встановлення пакетів на всіх платформах
Мінуси ляльок:
- Велика інфраструктура стає дуже складною
- Умовні залежності модуля створюють код спагетті
- Більш велика вага
В даний час ми використовуємо маріонетку для забезпечення наших докер-контейнерів. Контейнери для докерів використовуються для накопичення дженкінів і знищуються після кожного збирання. Це добре працює і дає нам стійке оточення. Це означає, що нам потрібно написати лише один раз, а потім відновити машини ubuntu, sles та centos. Перебудова контейнерів займає приблизно 15 - 30 хвилин і все ще є ручним процесом. Docker чудово підходить для швидкого випробовування вітрин,
Отже, коротко кажучи, лялька чудово керує наявною інфраструктурою. Docker хороший, якщо у вас є greenfield, який на 100% є Linux з технологічним стеком, який можна вкласти в невеликі ефемерні екземпляри. Хоча деякі функціональні можливості перекриваються, вони не є взаємовиключними.