Docker: простими словами про контейнеризацію
Docker став революційним інструментом, який змінив розробку програмного забезпечення та значно полегшив процес контейнеризації. Якщо ти тільки починаєш роботу з Docker, нумо досліджувати його з нами!
Що таке Docker?
Контейнеризація — це упакування програми у віртуальний контейнер разом зі всіма доповненнями, які потрібні для її запуску. Йому все одно, на якому комп’ютері та яку версію операційної системи ти використовуєш, він однаково буде працювати на всіх типах девайсів та ОС. Таким чином ти можеш запустити код для Mac на комп’ютері з Windows, не перевстановлюючи ОС.
Простими словами, система — це будинок, а контейнери — це окремі кімнати. Ти можеш зробити в кожній кімнаті різний ремонт, поставити різні меблі, встановити потрібну техніку. Кожна кімната може відрізнятися від іншої. Тому колір шпалер, наприклад, у спальні не впливає на вибір кольорів для кухні.
До появи технології контейнеризації призвели такі фактори:
- потреба в одночасному запуску багатьох програм з різними системними вимогами;
- стрімкий розвиток потужностей серверів;
- бажання зробити спосіб розгортання програми незалежним від ОС.
Docker — це програмне забезпечення, яке дозволяє відокремити певну кількість ресурсів під контейнер та керувати ними. У межах цієї ізольованої частини можна встановити потрібну операційну систему й змусити код працювати так, ніби на комп’ютері більше нічого нема. В одному контейнері може бути встановлений Linux, в другому — Windows, а в третьому — Mac, і вони ніяким чином не впливають один на одного.
Технологія контейнеризації дозволяє розгортати програму дуже компактно. Наприклад, образ Ubuntu займає приблизно 70Mb, тому його можна запустити та налаштувати дуже швидко.
Одна з головних переваг Docker полягає у його мультиплатформності. Технологія працює на багатьох ОС, що дозволяє легко передавати, запускати та налаштовувати програму на різних середовищах.
Чому Docker краще за віртуальну машину?
Віртуальна машина — програма, що допомагає встановити гостьову ОС на твій комп’ютер та запустити її одночасно з основною. Кожна ВМ має власну операційну систему, її ядро та віртуальне апаратне забезпечення, тому і відбувається ізоляція системи. Проте для роботи їй потрібна величезна кількість ресурсів, тому що одна ВМ може важити кілька гігабайтів.
На відміну від ВМ, контейнери ділять між собою одну операційну систему та її ядро, завантажуючи лише бінарні файли та бібліотеки, які потрібні для запуску програми. Для роботи контейнера тобі не потрібно встановлювати окрему ОС — декілька контейнерів можуть працювати в межах однієї системи.
Використання Docker є більш ефективним та економить ресурси твого комп’ютера. Контейнер зазвичай важить до 500Mb і не потребує розгортання всієї ОС, тому він може запуститися за декілька секунд.
Основні терміни платформи Docker
Перед тим, як почати працювати з Docker, необхідно розуміти такі терміни:
- Dockerfile — це файл-інструкція, як буде збиратися образ;
- Docker Image — це сам образ, який стоїть в основі запуску контейнера. Ти можеш створити його на основі Dockerfile, отримати від колег або завантажити з хмарного сховища. Образ може бути основою для декількох контейнерів;
- Docker Container — запущений у роботу образ, де програма працює відповідно до інструкції;
- Docker Engine — програмне забезпечення, яке запускає контейнери Docker. Складається з Docker Daemon та командного рядка;
- Docker Daemon — фоновий процес, який відповідає за керування Image та Container;
- Docker Hub — віддалене сховище, де можна знайти потрібні образи або зберігати свої;
- Docker Compose — інструмент для керування та одночасного використання декількох контейнерів, які пов’язані між собою. Docker Compose може мати свої кастомні налаштування або використовувати ті, що прописані у Dockerfile.
Як працює Docker?
Docker працює за принципом Build, Ship and Run any app anywhere, який описує процес розгортання програм за допомогою контейнерів. Весь процес складається з трьох етапів.
Build
Перший етап — це створення Dockerfile та Docker Image. Потрібно лише один раз визначити, як налаштувати програму і за якими принципами буде працювати продукт — це визначатиме роботу для кожної людини, яка буде користуватися цим контейнером. Docker Image містить необхідний код та всі додаткові складові для правильної роботи програмного забезпечення.
Ship
Другий етап — доставка образа на сервер або хмару, де буде запускатися програма. Після створення Docker Image його можна спокійно відправити іншій людині або перенести на сторонній комп’ютер і запустити. Тобі не потрібно хвилюватися про встановлення потрібних програм та мов програмування на свій комп’ютер — все це одразу вбудовано у Docker Image.
Run
Останній етап — запуск Docker Container, створеного з Docker Image. Образ працює саме у контейнері, щоб функціонал програми не залежав від процесів, що відбуваються у комп’ютері.
Інсталяція Docker на Debian та Ubuntu
Крок 1. Якщо ти вперше встановлюєш Docker Engine на свій комп’ютер, потрібно налаштувати репозиторій Apt:
- для Debian:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- для Ubuntu:
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Крок 2. Встанови останню версію Docker за допомогою наступної команди:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Крок 3. Перевір, чи інсталяція пройшла успішно, виконавши таку команду:
sudo docker run hello-world
Ця команда завантажить тестовий образ і запустить його в контейнері. Контейнер автоматично завершить роботу, а ти побачиш повідомлення з підтвердженням.
Висновок
Docker та контейнеризація стали незамінними частинами DevOps-практик. Docker вибирають через легкість використання, мультиплатформність та ефективність роботи. Якщо ти хочеш навчитися взаємодіяти з контейнерами, радимо приєднатися до нашого курсу «Адміністрування Docker». Ми зацікавлені у тому, аби ти не тільки вчив теорію, а й отримав практичний досвід роботи.