Чи є якісь причини використовувати Лялечку поряд з Docker?


16

Я спробував Ops частину DevOps деякий час тому, і це було досить весело, але у мене немає часу та причини спробувати це в будь-якому проекті. Але минулого тижня я розпочав нову роботу, де начальник запитав мене, чи можу я налаштувати сервер, щоб зробити щось на зразок постановочного середовища для проектів компанії. Поряд із цим я почав думати про те, щоб міграційний проект був більше DevOps, а не лише розробником.

Я вийшов з Docker, що для мене чудово і дуже просто. Але деякий час тому я пробував Лялечку, тому мені прийшло питання: "Чи є причина використовувати Лялечку з Докером?". Здається, Докер робить все те, що робив Ляльковий, але простішим способом.

PS Деякий час тому на Hacker News був консул, який має гарну конфігурацію та відкриття сервісу, тому навіть конфігурацію можна вирішити (і я теж думаю про реалізацію цього).

Відповіді:


18

Лялька та докер можуть робити багато одних і тих же речей, однак вони підходять до них по-різному.

Лялька управляє файлами + пакетами + послугами. (Називається трифекта). 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 з технологічним стеком, який можна вкласти в невеликі ефемерні екземпляри. Хоча деякі функціональні можливості перекриваються, вони не є взаємовиключними.


5
Я вважав цю відповідь суб’єктивною та умоглядною. Я не вірю, що це насправді відповідає, чому можна продовжувати використовувати Лялечку поряд / спільно з Докером, коли Докер з’являється на високому рівні, щоб бути простішим інструментом для тієї ж мети.
8bitjunkie

1
@ 7SpecialGems Оновлено більше фактів.
спудер

1
було б чудово переглянути відгук на цю відповідь у світі 2015 та як змінилися справи
Олівер Байес-Шелтон

Питання / відповідь все ще відносний у 2019 році? Що могло змінитися?
Абу Тахер

2

Docker допомагає вам забезпечити та спочатку налаштувати контейнери, але він виконує одноразові команди при ініціалізації контейнера.

Лялька є найсильнішою, коли ви запускаєте її як демон, вона гарантує, що ваша конфігурація залишається в той час, як ви її вказали, так, наприклад, якщо служба перестане працювати, вона запустить її знову.

Однією з найкращих речей щодо (правильно розробленої) конфігурації ляльок є те, що вони безсильні ; передбачається описати стан, в якому ви хочете бути, і не так вже й обов'язково кроки, щоб дістатися до нього.

Він також дозволяє абстрагувати та параметризувати конфігурації, а також можна експортувати параметри, створені на одному сервері чи контейнері, та використовувати їх в інший (наприклад, збирати список вузлів імен хостів для програми моніторингу).

Я б сказав, що вони безумовно служать різним, але спорідненим цілям. Я зараз розглядаю використання існуючих маріонеткових маніфестів, щоб почати налаштовувати контейнери так, щоб середовища розробки були більше схожими на виробничі середовища.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.