Опишемо кілька варіантів використання Docker на практиці, які добре відбивають його сильні сторони.
Створення додатків із залежностями
Найчастіше, для встановлення будь-якої бібліотеки або бази даних, розробнику доводиться вивчати інструкцію на сайті, потім він її завантажує, інсталює та виконує конфігурацію. Коли потрібно перейти на іншу залежність, поточна бібліотека видаляється, і весь процес починається заново. У результаті працювати з кожною залежністю доводиться витрачати чимало часу.
Docker пропонує альтернативний, більш простий шлях. Компанії-постачальники бібліотек, фреймворків та баз даних регулярно розміщують свій софт на Docker Hub у форматі Docker image. Образ можна швидко завантажити і розгорнути через Docker, а коли потреба в ньому пропаде - видалити, не залишивши сліду в операційній системі.
Тобто, Docker фактично надає єдиний інтерфейс управління, і розробникам не потрібно розумітися на особливостях індивідуальних команд для кожної бібліотеки. Натомість достатньо вивчити команди Docker: для скачування образів, запуску контейнерів та роботи з портами.
Використовуючи Docker, розробники можуть запустити необмежену кількість баз даних в одній операційній системі. Навіть якщо щось піде не так, завдяки повній ізоляції помилки не торкнуться роботи основної ОС і торкнуться виключно контейнера.
Автоматизація тестування
Для запуску автоматизованих тестів потрібні певні залежності, такі як бази даних, брокери повідомлень та інше. Всі вони встановлюються і налаштовуються на сервері збирання ще до початку тестування, і на цьому етапі часто виникають труднощі. Наприклад, якщо якась деталь буде втрачена, існує великий ризик щось «зламати» в ОС або зіпсувати дані. В цьому випадку буде куди безпечніше розгортати залежності у вигляді контейнера безпосередньо на сервері. Таким чином можна швидко виконати тести, а потім повністю видалити контейнери, не залишивши сліду в самій операційній системі.
В результаті, навіть якщо щось піде не так і тести зламають дані, всі вони будуть видалені разом з контейнером. До того ж, завдяки контейнеризації на сервері можна буде запускати буквально все, що завгодно, що зробить його більш універсальним, а отже можна заощадити час на налаштуванні системи.
Публікація програми
Коли тестування завершено, настає час публікації проекту чи передачі його клієнту. На цьому етапі Docker значно полегшує розгортання, оскільки інженерам не доводиться думати про те, які залежності встановлювати на різних пристроях та в різних середовищах. Все це вже запаковано в ізольований контейнер, який готовий до запуску.
Docker робить середовище деплою більш універсальним. Фактично, SRE завжди буде мати справу виключно з контейнерами, які можна розгортати і одноманітно оновлювати за допомогою тих самих команд, навіть незважаючи на те, що всередині можуть знаходитися зовсім різні програми.