Розроблена інженерами Über система зберігання даних Schemaless використовується в декількох найважливіших і великих сервісах нашої компанії (наприклад, Mezzanine). Schemaless — це масштабоване та надійне сховище даних, що працює поверх кластерів MySQL1. Коли цих кластерів було 16, керування ними була нескладною справою. Але зараз у нас їх понад 1 000, і в них розгорнуто не менше 4 000 серверів баз даних. Управління такою системою вимагає інструментів зовсім іншого класу.
З безлічі компонентів, що входять до Schemadock, порівняно невеликий, але дуже важливою частиною є Docker. Перехід на більш масштабоване рішення став для нас знаковою подією, і в даній статті ми розповіли про те, як Docker допоміг нам цього домогтися.
Читати далі →



Для роботи з потенційно небезпечними, неперевіреними або просто «сирими» програмами часто використовуються так звані пісочниці (sandboxes)   спеціально виділені середовища з жорсткими обмеженнями. Для запускаються в пісочницях програм зазвичай сильно лімітовані доступ до мережі, можливість взаємодії з операційною системою на хост-машині і зчитувати інформацію з пристроїв вводу-виводу.

У останнім часом для запуску неперевірених і небезпечних програм все частіше використовуються контейнери.

Читати далі →

Контейнери і віртуалізація: швидше, надійніше

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

image
Читати далі →

Управління контейнерами з runC

runc

Продовжуємо цикл статей про контейнеризації. Сьогодні ми поговоримо про runC — інструмент для запуску контейнерів, що розробляється в рамках проекту Open Containers. Мета цього проекту полягає в розробці єдиного стандарту в області контейнерних технологій. Проект підтримують такі компанії, як Facebook, Google, Microsoft, Oracle, EMC, Docker. Влітку 2015 року був опублікований чорновий варіант специфікації під назвою Open Container Initiative (OCI).

Читати далі →

Docker: коли потрібно розміщувати контейнер на віртуальній машині?

image

Контейнери додатків гарантують високу швидкість роботи і утилізацію ресурсів, але їм не вистачає тієї безпеки, яку забезпечують віртуальні машини. Тому сьогодні хочеться поговорити про використання Docker всередині ВМ, зокрема – OpenSource проекту QEMU/KVM.

Читати далі →

Жива міграція контейнерів: погляд зсередини

Сьогодні ми розглянемо тему, яка не повною мірою розкрито в сучасному світі ІТ: жива міграція контейнерів, як вона працює за лаштунками і які проблеми вирішує. Попит на дану технологію продовжує стрімко зростати, оскільки вона відкриває нові можливості, надаючи більше свободи в управлінні життєвим циклом додатків.

Жива міграція – що це?

Жива міграція контейнерів передбачає собою процес переміщення програми між різними фізичними машинами або хмарами без переривання роботи програми і розриву зв'язку з користувачем. Пам'ять, файлова система і мережеве з'єднання контейнерів, запущені поверх «голої» апаратури, передаються від вихідного хост-комп'ютера до місця призначення, підтримуючи робочий стан без переривання роботи.
image

Читати далі →

GitLab Container Registry

У травні цього року вийшов реліз ГитЛаба 8.8. Частиною цього релізу запуск вбудованого Docker Container Registry. Нижче переклад травневої статті, присвяченій цьому.
Нещодавно нами був випущений GitLab версії 8.8, в якій підтримка CI стала ще краще. Тепер у GitLab можна будувати конвеєри (pipelines) для візуалізації збірок, тестів, розгортання і будь-яких інших етапів життєвого циклу вашого. Сьогодні ми представляємо вам наступний етап: GitLab Container Registry .
GitLab Container Registry — це безпечний приватний реєстру для образів (images) Docker, розроблений з допомогою ПЗ з відкритим кодом. GitLab Container Registry повністю інтегрований в GitLab.
Ключовими особливостями GitLab є безперервність процесу розробки і взаємна інтеграція різних елементів; ці принципи зберігаються і при роботі з нашим реєстром. Тепер за допомогою GitLab Container Registry ви можете використовувати ваші Docker-образи для GitLab CI, створювати спеціальні образи для окремих тегів і гілок, а також багато іншого.
Варто відзначити, що GitLab Container Registry є першим реєстром Docker, повністю інтегрованим в систему управління Git-репозиторіями. Крім того, GitLab Container Registry не потребує установки, так як є частиною GitLab 8.8; c його допомогою можна легко завантажувати і завантажувати образи на GitLab CI. І ще він безкоштовний.
Для того, щоб дізнатися, як включити використання GitLab Container Registry, зверніться до документації для адміністратора.

Читати далі →

Управління контейнерами з LXD

LXD Containers

Продовжуємо наш цикл статей про контейнеризації. Якщо перші дві статті (1 і 2) були присвячені теорії, то сьогодні ми поговоримо про цілком конкретному інструменті і про особливості його практичного використання. Предметом нашого розгляду буде LXD (скорочення від Linux Container Daemon), створений канадцем Стефаном Ґрабе компанії Canonical.

Читати далі →

Java і обмеження пам'яті в контейнерах: LXC, Docker та OpenVZ

Нещодавно була опублікована інформативна стаття Метта Вільямса про Java в Docker і існуючих обмеженнях пам'яті. Автор піднімає цікаву тему про приховану проблему обмеження пам'яті, з якої користувачі можуть зіткнутися під час роботи з контейнерами.

Велика кількість репостов і лайків показує, що дана тема досить популярна серед Java-розробників.image

Тому, хотілося б більш детально проаналізувати дану проблему і визначити можливі шляхи її вирішення.

Проблема

Метт описує своє нічний «подорож» в контейнері Docker зі стандартною поведінкою пам'яті JVM. Він виявив, щообмеження RAM відображаються некоректно всередині контейнера. В результаті, додаток Java, або будь-яке інше, бачить загальний обсяг ресурсів оперативної пам'яті, виділеної для всієї хост-машини, а JVM не може вказати, скільки ресурсів було надано батьківського контейнера для роботи. Це призводить до помилки OutOfMemoryError, викликана неправильною поведінкою динамічної пам'яті JVM в контейнері.

Фабіо Кунг, з Heroku, докладно описав основні причини виникнення цієї проблеми у своїй недавній статті "Пам'ять усередині контейнерів Linux. Або чому в контейнері Linux не працює free top?"

Більшість інструментів Linux, надають метрики ресурсів системи, були створені в той час, коли cgroups ще не існували (наприклад: free top, як у procps). Вони зазвичай читають метрики пам'яті з файлової системи proc: /proc/meminfo, /proc/vmstat, /proc/PID/smaps та інших.

Читати далі →

Open source ініціатива Docker4Drupal.org



Вже можна твердо констатувати, що контейнери і, зокрема docker, стали стандартом де-факто для розробників. Можна ще сперечатися про придатності контейнерів в продакшені, але вже ніхто не сперечається, що для локальної розробкою і dev инстансов Docker незамінний.

Саме тому ми вирішили раз і назавжди вирішити головний біль для друпал розробників почавши open source ініціативу Docker4Drupal.org. Тим більше, що для друпал оточення досить стандартизований.

Читати далі →