Пошук уроків, статей та іншого контенту
Встановите Docker, запустите контейнер і розберете основні команди для роботи з образами та контейнерами.
Docker — це платформа для запуску застосунків у контейнерах. Контейнер містить застосунок і залежності, необхідні для його роботи, але використовує ядро операційної системи хоста.
Основні поняття:
Образ (image) — шаблон для створення контейнерів. Наприклад, nginx:alpine.
Контейнер (container) — запущений екземпляр образу.
Docker Engine — служба, яка створює та запускає контейнери.
Docker Hub — реєстр, з якого Docker завантажує готові образи.
Один образ можна використовувати для створення багатьох контейнерів.
Для Windows і macOS найпростіше використовувати Docker Desktop.
Завантажте Docker Desktop з офіційного сайту Docker.
Запустіть інсталятор.
Дотримуйтеся інструкцій майстра встановлення.
Перезапустіть комп’ютер, якщо інсталятор цього попросить.
Запустіть Docker Desktop і дочекайтеся, поки Docker Engine буде готовий до роботи.
У Windows Docker Desktop зазвичай використовує WSL 2. Якщо WSL 2 ще не встановлено, Docker Desktop запропонує виконати необхідне налаштування.
У навчальному прикладі використаємо пакет docker.io, доступний у репозиторіях Ubuntu та Debian:
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now dockerПеревірте, що Docker встановлено:
docker --versionКоманда має вивести версію Docker, наприклад:
Docker version 26.1.3, build ...У деяких Linux-дистрибутивах назва пакета або команда встановлення може відрізнятися.
Запустіть тестовий контейнер:
docker run hello-worldЯкщо Docker працює правильно, він:
перевірить, чи є образ hello-world локально;
завантажить образ, якщо його немає;
створить контейнер;
запустить контейнер;
виведе тестове повідомлення.
Образ hello-world призначений саме для перевірки встановлення Docker. Після виведення повідомлення контейнер завершує роботу.
У Linux команда може потребувати sudo:
sudo docker run hello-worldЩоб запускати Docker без sudo, додайте поточного користувача до групи docker:
sudo usermod -aG docker "$USER"Після цього вийдіть із системи та увійдіть знову. Зміна групи не застосовується до вже відкритого термінала.
Для практичного прикладу використаємо вебсервер Nginx. Його образ називається nginx, а тег alpine вказує на варіант образу на основі Alpine Linux.
Запустіть контейнер:
docker run --name first-nginx -d -p 8080:80 nginx:alpineРозглянемо параметри команди:
docker run — створити та запустити контейнер;
--name first-nginx — задати контейнеру ім’я;
-d — запустити контейнер у фоновому режимі;
-p 8080:80 — перенаправити порт 8080 комп’ютера на порт 80 контейнера;
nginx:alpine — образ і його тег.
Якщо образу nginx:alpine немає на комп’ютері, Docker автоматично завантажить його з реєстру.
Після запуску відкрийте в браузері адресу:
http://localhost:8080Має відобразитися стандартна сторінка Nginx.
На Linux можна перевірити відповідь командою:
curl http://localhost:8080Щоб переглянути активні контейнери, використайте:
docker psПриклад результату:
CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES
a1b2c3d4e5f6 nginx:alpine "/docker-entrypoint.…" Up 10 seconds 0.0.0.0:8080->80/tcp first-nginxВажливі стовпці:
CONTAINER ID — короткий ідентифікатор контейнера;
IMAGE — образ, використаний для запуску;
STATUS — поточний стан;
PORTS — налаштовані перенаправлення портів;
NAMES — ім’я контейнера.
Щоб переглянути всі контейнери, зокрема вже завершені:
docker ps -adocker stop first-nginxКонтейнер зупинено, але він усе ще існує. Перевірити це можна так:
docker ps -adocker start first-nginxПісля цього вебсервер знову буде доступний на http://localhost:8080.
Щоб переглянути повідомлення контейнера:
docker logs first-nginxДля перегляду журналів у режимі реального часу використовуйте:
docker logs -f first-nginxЗупиніть перегляд журналів комбінацією Ctrl+C. Це зупиняє лише команду перегляду, а не сам контейнер.
Спочатку зупиніть контейнер:
docker stop first-nginxПотім видаліть його:
docker rm first-nginxВидалення контейнера не видаляє образ nginx:alpine.
docker imagesАбо еквівалентна команда:
docker image lsУ списку будуть назва образу, тег, ідентифікатор і розмір.
Завантажити образ без запуску контейнера можна командою:
docker pull nginx:alpineЦе корисно, коли потрібно підготувати образ заздалегідь.
Якщо образ більше не потрібен і жоден контейнер його не використовує:
docker rmi nginx:alpineАбо:
docker image rm nginx:alpineDocker не дозволить видалити образ, якщо від нього залежить наявний контейнер. У такому випадку спочатку видаліть відповідний контейнер.
Нижче наведено послідовність команд для запуску, перевірки та очищення контейнера:
# Завантажити образ Nginx, якщо його ще немає локально
docker pull nginx:alpine
# Створити та запустити контейнер у фоновому режимі
docker run --name first-nginx -d -p 8080:80 nginx:alpine
# Перевірити список запущених контейнерів
docker ps
# Перевірити роботу вебсерверу
curl http://localhost:8080
# Переглянути журнали контейнера
docker logs first-nginx
# Зупинити контейнер
docker stop first-nginx
# Видалити зупинений контейнер
docker rm first-nginxПісля виконання останньої команди контейнер буде видалено, але образ nginx:alpine залишиться локально.
Команди docker stop і docker rm працюють із контейнерами:
docker stop first-nginx
docker rm first-nginxКоманди docker pull і docker rmi працюють із образами:
docker pull nginx:alpine
docker rmi nginx:alpineТиповий порядок такий:
Docker отримує образ.
На основі образу створюється контейнер.
Контейнер запускається.
Контейнер можна зупинити, запустити знову або видалити.
Образ можна залишити для створення нових контейнерів.
docker: command not foundDocker не встановлено або команда Docker недоступна в змінній середовища PATH.
Перевірте встановлення Docker і перезапустіть термінал.
permission denied while trying to connectУ Linux поточний користувач не має доступу до Docker Engine.
Тимчасово використайте sudo:
sudo docker psАбо додайте користувача до групи docker і повторно увійдіть у систему:
sudo usermod -aG docker "$USER"Якщо порт 8080 використовується іншою програмою, контейнер не запуститься з таким перенаправленням.
Виберіть інший порт на комп’ютері:
docker run --name first-nginx -d -p 8081:80 nginx:alpineУ цьому випадку відкривайте:
http://localhost:8081Порт усередині контейнера залишається 80, змінюється лише порт комп’ютера.
Ім’я контейнера має бути унікальним. Якщо контейнер first-nginx уже існує, видаліть його:
docker rm -f first-nginxПараметр -f примусово зупиняє та видаляє контейнер.
docker psКоманда docker ps показує лише запущені контейнери. Для перегляду завершених контейнерів використовуйте:
docker ps -aDocker запускає застосунки в ізольованих контейнерах.
Образ є шаблоном, а контейнер — його запущеним екземпляром.
Команда docker run може автоматично завантажити образ і створити контейнер.
docker ps показує запущені контейнери, а docker ps -a — усі контейнери.
docker stop, docker start, docker logs і docker rm керують контейнерами.
docker pull, docker images і docker rmi працюють з образами.
Параметр -p з’єднує порт комп’ютера з портом усередині контейнера.