Docker

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

Платформа Docker

Docker надає можливість пакувати та запускати додаток у слабко ізольованому середовищі, яке називається контейнер. Ізоляція та безпека дозволяє запускати багато контейнерів одночасно на одному хості. Контейнери легкі і містять все необхідне для запуску програми, тому вам не потрібно покладатися на те, що в даний момент встановлено на хості. Ви можете легко ділитися контейнерами під час роботи і бути впевненими, що кожен, з ким ви ділитеся, отримає той самий контейнер, який працює так само.

Docker надає інструменти та платформу для управління життєвим циклом ваших контейнерів:

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

Для чого я можу використовувати Docker?

Швидка, узгоджена доставка ваших додатків

Docker спрощує життєвий цикл розробки, дозволяючи розробникам працювати в стандартизованому середовищі, використовуючи локальні контейнери, які надають ваші програми та сервіси. Контейнери чудово підходять для робочих процесів безперервної інтеграції та безперервної доставки (CI/CD).

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

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

Адаптивне розгортання та масштабування

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

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

Запуск більшої кількості робочих навантажень на тому самому обладнанні

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

Архітектура Docker

Docker використовує архітектуру клієнт-сервер. Клієнт Docker взаємодіє з демоном Docker, який виконує важку роботу зі створення, запуску та розповсюдження ваших контейнерів Docker. Клієнт і демон Docker можуть працювати на одній системі, або ви можете підключити клієнт Docker до віддаленого демона Docker. Клієнт і демон Docker взаємодіють за допомогою REST API, через сокети UNIX або мережевий інтерфейс. Ще одним клієнтом Docker є Docker Compose, який дозволяє працювати з додатками, що складаються з набору контейнерів.

Схема архітектури Docker

Демон Docker

Демон Docker (dockerd) слухає запити Docker API і керує об'єктами Docker, такими як образи, контейнери, мережі та томи. Демон також може взаємодіяти з іншими демонами для керування службами Docker.

Клієнт Docker

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

Docker Desktop

Docker Desktop - це простий у встановленні додаток для вашого середовища Mac, Windows або Linux, який дозволяє створювати і надавати спільний доступ до контейнерних програм і мікросервісів. До складу Docker Desktop входять демон Docker (dockerd), клієнт Docker (docker), Docker Compose, Docker Content Trust, Kubernetes і Credential Helper.

Реєстр Docker

У реєстрі Docker зберігаються образи Docker. Docker Hub - це загальнодоступний реєстр, яким може користуватися будь-хто, і за замовчуванням Docker налаштовано на пошук образів у Docker Hub. Ви навіть можете створити власний приватний реєстр.

Коли ви використовуєте команди docker pull або docker run, потрібні образи буде витягнуто з вашого налаштованого реєстру. Коли ви використовуєте команду docker push, ваш образ буде переміщено до налаштованого вами реєстру.

Об'єкти Docker

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

Образ

Образ - це шаблон, доступний лише для читання, з інструкціями для створення контейнера Docker. Часто образ базується на іншому образі, з деякими додатковими налаштуваннями. Наприклад, ви можете створити образ, який базується на образі ubuntu, але встановлює веб-сервер Apache і вашу програму, а також деталі конфігурації, необхідні для запуску вашої програми.

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

Контейнери

Контейнер - це виконуваний екземпляр зображення. Ви можете створити, запустити, зупинити, перемістити або видалити контейнер за допомогою Docker API або CLI. Ви можете підключити контейнер до однієї або декількох мереж, приєднати до нього сховище або навіть створити новий образ на основі його поточного стану.

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

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

Приклад команди docker run Наступна команда запускає контейнер ubuntu, інтерактивно приєднується до вашого локального сеансу командного рядка і запускає /bin/bash.

docker run -i -t ubuntu /bin/bash

Коли ви запускаєте цю команду, відбувається наступне (припускаючи, що ви використовуєте стандартну конфігурацію реєстру):

  1. Якщо у вас немає образу ubuntu локально, Docker витягне його з вашого налаштованого реєстру, так, ніби ви виконали docker pull ubuntu вручну.
  2. Docker створить новий контейнер так, ніби ви виконали команду docker container create вручну.
  3. Docker виділяє для контейнера файлову систему для читання і запису, як останній рівень. Це дозволяє запущеному контейнеру створювати або змінювати файли і каталоги у своїй локальній файловій системі.
  4. Docker створює мережевий інтерфейс для підключення контейнера до мережі за замовчуванням, оскільки ви не вказали жодних мережевих параметрів. Це включає призначення IP-адреси для контейнера. За замовчуванням, контейнери можуть підключатися до зовнішніх мереж за допомогою мережевого з'єднання хост-машини.
  5. Docker запускає контейнер і виконує /bin/bash. Оскільки контейнер працює інтерактивно і підключений до вашого терміналу (завдяки прапорцям -i і -t), ви можете вводити дані за допомогою клавіатури, а вивід буде записано до вашого терміналу.
  6. Коли ви вводите exit для завершення команди /bin/bash, контейнер зупиняється, але не вилучається. Ви можете запустити його знову або вилучити.

Технологія, що лежить в основі

Docker написаний на мові програмування Go і використовує деякі особливості ядра Linux для забезпечення своєї функціональності. Docker використовує технологію просторів імен (namespaces) для створення ізольованого робочого простору, який називається контейнером. Коли ви запускаєте контейнер, Docker створює набір просторів імен для цього контейнера.

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

results matching ""

    No results matching ""