Hopp til innhold

Докер — що таке Докер?

Skip to content

Це машинний переклад тексту, який може містити помилки!

Що таке Docker?

Ви маєте налаштувати вебсервер на сервері з Linux. Одна можливість — встановити вебсервер і всі залежності безпосередньо в операційну систему сервера. Завдяки Docker ви натомість можете отримати готовий образ (image) і створити з нього контейнер.

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

Перед початком: Чи можете ви пояснити різницю між віртуальною машиною та контейнером? Якщо ви сумніваєтесь, почніть із Контейнеризація Рівень 1 — Контейнери та віртуальні машини. Там також показано, як Docker можна запускати всередині Linux-ВМ на Proxmox.

Місце у навчальному матеріалі: Docker є інструментом контейнеризації. Ядро операційної системи пояснює, чим поділяються контейнери. Навигатор по огляду показує зв’язки між операційною системою, ВМ, контейнерами та інструментами.

Docker є інструментом для обробки контейнерів

Docker може збирати та отримувати образи, створювати і запускати контейнери, а також керувати мережею та сховищем даних для них. На сервері Linux цю роботу виконує Docker Engine.

Коли ви вводите docker run, ви використовуєте клієнт командного рядка Docker. Клієнт надсилає запит до служби Docker, dockerd, яка обробляє контейнер. У навчальному середовищі як клієнт, так і служба працюють усередині віртуальної машини Linux.

Ви можете вводити команду у консолі віртуальної машини в Proxmox або через сесію SSH до тієї ж віртуальної машини. Обидва способи керують Docker на одній і тій самій віртуальній машині. Docker Desktop — це окремий продукт, який агрегує інструменти Docker у програмному інтерфейсі робочого столу; він не потрібен для налаштування сервера тут.

Одне образ може використовуватися для кількох контейнерів

Образ nginx:alpine використовується для створення двох окремих контейнерів. Один називається min-nginx і працює, тоді як інший має ім'я test-nginx і зупинений. Образ продовжує існувати незалежно від обох.

Image (образ) — це пакет файлів, програми та налаштувань, які використовуються для створення контейнера. nginx:alpine є прикладом: nginx вказує на ім’я образу, а alpine — це тег, мітка, що вказує на варіант образу. Тег пізніше може вказувати на нову версію.

Контейнер — це окремий екземпляр, створений із образу, зі своїм власним ім’ям, станом і записуваним шаром. Контейнер може бути створеним, активним або зупиненим. Тому зупинена програма не означає, що контейнер було видалено.

Зміни у записуваному шарі контейнера не впливають на образ. Якщо ви створюєте інший контейнер з того ж самого образу, він отримує свій власний записуваний шар.

Звідки береться образ?

Реєстр контейнерів зберігає та розповсюджує образи. Docker Hub і GitHub Container Registry є двома прикладами.

Якщо образ наявний у реєстрі, але не на сервері, Docker може отримати його за допомогою docker pull. Ви також можете створити власний образ із вихідного коду та файлу Dockerfile; ви знайомитеся з цим на рівні 2.

Термін У прикладі вебсервера
Реєстр Docker Hub, звідки можна отримати образ Nginx.
Образ nginx:alpine, завантажений пакет.
Контейнер min-nginx, окремий екземпляр, створений із пакета.
Сервіс Вебсервер, який відповідає на HTTP-запити під час виконання програми.

Що означають перші команди?

Зараз вам потрібно лише прочитати цей приклад. Встановлення та практичне виконання буде розглянуто в [[Docker Level 1 - Ком і гуг|Рівень 1]].

docker pull nginx:alpine
docker run -d --name min-nginx -p 8080:80 nginx:alpine
docker ps

Перша команда отримує образ. Друга створює та запускає контейнер min-nginx і з’єднує порт сервера 8080 із портом контейнера 80. Третя відображає запущені контейнери. Nginx — це програма, яка відповідає на запити; Docker керує середовищем, в якому вона працює.

Передбачте те, що залишиться

У вас є один образ і два контейнери з нього. Ви зупиняєте та видаляєте лише min-nginx.

  1. Чи все ще існує образ?
  2. Чи також зникне test-nginx?
  3. Можна створити новий контейнер із цього образу?

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

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

Додатково

[[Docker Level 1 - Ком і ганг|Встановіть Docker Engine]]. Використовуйте ресурс із контейнеризації як підтримку, коли ви хочете ознайомитися з відносинами до віртуальних машин та віртуалізації.

Джерела: архітектура Docker, образ та життєвий цикл контейнера. Ілюстрацію створено для цього ресурсу.