Посібник для початківців з Docker: Швидкий старт з контейнеризації ваших додатків

2/18/2026
6 min read
# Посібник для початківців з Docker: Швидкий старт з контейнеризації ваших додатків

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

## Основні концепції Docker

Перш ніж почати практику, важливо зрозуміти деякі основні концепції Docker:

*   **Образ (Image):** Образ — це шаблон лише для читання, який містить усе необхідне для запуску програми: код, середовище виконання, системні інструменти, бібліотеки та залежності. Схожий на образ віртуальної машини, але набагато легший.

*   **Контейнер (Container):** Контейнер — це запущений екземпляр, створений з образу. Це екземпляр образу під час виконання, який містить програму та всі її залежності. Контейнери ізольовані один від одного, мають власну файлову систему, процеси та мережевий простір.

*   **Docker Hub:** Docker Hub — це загальнодоступний репозиторій образів, з якого ви можете завантажувати попередньо створені образи або завантажувати власні. Схожий на GitHub, але спеціалізується на образах Docker.

*   **Dockerfile:** Dockerfile — це текстовий файл, який містить усі інструкції для створення образу Docker. Написавши Dockerfile, ви можете автоматизувати процес створення образу.

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

## Встановлення Docker

Спочатку вам потрібно встановити Docker. Docker надає інсталяційні пакети для різних операційних систем. Відвідайте [офіційний веб-сайт Docker](https://www.docker.com/get-started/) і дотримуйтесь відповідних інструкцій для встановлення.

Після завершення встановлення ви можете перевірити, чи правильно встановлено Docker, виконавши команду `docker --version`.

## Контейнеризація простого Python-додатка

Ми створимо простий Python-додаток і контейнеризуємо його за допомогою Docker.

### 1. Створення Python-додатка

Створіть файл під назвою `app.py`, що містить наступний код:

```python
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Docker!"

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0')

Цей простий додаток Flask повертає "Hello, Docker!" за кореневим шляхом /.

2. Створення файлу requirements.txt

Додаток залежить від бібліотеки Flask, тому нам потрібно створити файл requirements.txt, щоб оголосити ці залежності.

Flask

3. Створення Dockerfile

Створіть файл під назвою Dockerfile і додайте наступний вміст:

# Використовуйте офіційний образ Python як базовий образ
FROM python:3.9-slim-buster

# Встановіть робочий каталог
WORKDIR /app

# Скопіюйте файл requirements.txt у робочий каталог
COPY requirements.txt .

# Встановіть залежності
RUN pip install --no-cache-dir -r requirements.txt

Копіювання коду програми в робочий каталог

COPY app.py .

Відкриття порту 5000

EXPOSE 5000

Визначення команди запуску

CMD ["python", "app.py"]


**Пояснення до Dockerfile:**

*   `FROM python:3.9-slim-buster`: Вказує базовий образ як полегшену версію Python 3.9.
*   `WORKDIR /app`: Встановлює робочий каталог всередині контейнера як `/app`.
*   `COPY requirements.txt .`: Копіює файл `requirements.txt` з поточного каталогу в каталог `/app` контейнера.
*   `RUN pip install --no-cache-dir -r requirements.txt`: Запускає команду `pip` всередині контейнера для встановлення залежностей, вказаних у файлі `requirements.txt`. Параметр `--no-cache-dir` може зменшити розмір образу.
*   `COPY app.py .`: Копіює файл `app.py` з поточного каталогу в каталог `/app` контейнера.
*   `EXPOSE 5000`: Оголошує, що контейнер буде прослуховувати порт 5000.
*   `CMD ["python", "app.py"]`: Визначає команду, яка буде виконана при запуску контейнера.

### 4. Збірка Docker образу

У каталозі, що містить `Dockerfile`, виконайте наступну команду для збірки Docker образу:

```bash
docker build -t my-python-app .
  • docker build: Команда для збірки образу.
  • -t my-python-app: Призначає ім'я образу (my-python-app).
  • .: Вказує каталог, де знаходиться Dockerfile (поточний каталог).

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

5. Запуск Docker контейнера

Використовуйте наступну команду для запуску Docker контейнера:

docker run -d -p 5000:5000 my-python-app
  • docker run: Команда для запуску контейнера.
  • -d: Запускає контейнер у відокремленому режимі (працює у фоновому режимі).
  • -p 5000:5000: Зіставляє порт 5000 хост-машини з портом 5000 контейнера.
  • my-python-app: Вказує ім'я образу, який потрібно використовувати.

6. Перевірка програми

Відвідайте http://localhost:5000 у браузері, і ви повинні побачити "Hello, Docker!".

7. Зупинка та видалення контейнера

Використовуйте наступну команду для зупинки контейнера:

docker stop 

`` можна переглянути за допомогою команди docker ps.

Використовуйте наступну команду для видалення контейнера:

docker rm 

Початок роботи з Docker Compose

Якщо ваша програма складається з кількох служб, ви можете використовувати Docker Compose для їх керування.

1. Створення файлу docker-compose.yml

Створіть файл під назвою docker-compose.yml і додайте наступний вміст:

version: "3.9"
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"

Пояснення до docker-compose.yml:* version: "3.9": Вказує версію файлу Docker Compose.

  • services: Визначає сервіси програми.
  • web: Визначає сервіс під назвою "web".
  • image: my-python-app: Вказує образ, який використовується сервісом.
  • ports: Визначає відображення портів.

2. Запуск програми

У каталозі, що містить файл docker-compose.yml, запустіть наступну команду, щоб запустити програму:

docker-compose up -d
  • docker-compose up: Команда для запуску програми.
  • -d: Запускає контейнер у відокремленому режимі.

3. Зупинка програми

Використовуйте наступну команду, щоб зупинити програму:

docker-compose down

Найкращі практики безпеки Docker

Як видно з обговорення, безпека образів Docker є важливим питанням. Ось деякі найкращі практики безпеки Docker:

  • Використовуйте офіційні образи: Наскільки це можливо, використовуйте офіційні образи, які зазвичай проходять сканування безпеки та обслуговуються.
  • Скануйте образи на наявність вразливостей: Використовуйте такі інструменти, як Trivy, для сканування образів на наявність відомих вразливостей та своєчасного оновлення образів.
  • Використовуйте принцип найменших привілеїв: Уникайте запуску контейнерів від імені користувача root.
  • Обмежте ресурси контейнера: Використовуйте cgroups для обмеження використання процесора та пам'яті контейнером.
  • Регулярно оновлюйте образи: Підтримуйте образи в актуальному стані, щоб виправити вразливості безпеки.
  • Використовуйте інструменти сканування безпеки: Такі інструменти, як Snyk, Clair, тощо, можна інтегрувати у ваш CI/CD процес для автоматичного сканування образів на наявність вразливостей.

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

Published in Technology

You Might Also Like

Як використовувати технології хмарних обчислень: повний посібник зі створення вашої першої хмарної інфраструктуриTechnology

Як використовувати технології хмарних обчислень: повний посібник зі створення вашої першої хмарної інфраструктури

Як використовувати технології хмарних обчислень: повний посібник зі створення вашої першої хмарної інфраструктури Вступ ...

Попередження! Батько Claude Code прямо заявляє: через місяць без Plan Mode титул програміста зникнеTechnology

Попередження! Батько Claude Code прямо заявляє: через місяць без Plan Mode титул програміста зникне

Попередження! Батько Claude Code прямо заявляє: через місяць без Plan Mode титул програміста зникне Нещодавно в YC відб...

2026年 Top 10 深度学习资源推荐Technology

2026年 Top 10 深度学习资源推荐

2026年 Top 10 深度学习资源推荐 随着深度学习在各个领域的迅速发展,越来越多的学习资源和工具涌现出来。本文将为您推荐2026年最值得关注的十个深度学习资源,帮助您在这一领域中快速成长。 1. Coursera Deep Learn...

2026 рік Топ 10 AI агентів: аналіз основних перевагTechnology

2026 рік Топ 10 AI агентів: аналіз основних переваг

2026 рік Топ 10 AI агентів: аналіз основних переваг Вступ З розвитком штучного інтелекту AI агенти стали гарячою темою у...

Рекомендації топ-10 AI інструментів 2026 року: розкриття справжнього потенціалу штучного інтелектуTechnology

Рекомендації топ-10 AI інструментів 2026 року: розкриття справжнього потенціалу штучного інтелекту

Рекомендації топ-10 AI інструментів 2026 року: розкриття справжнього потенціалу штучного інтелекту У часи швидкого розви...

2026年 Top 10 AWS工具和资源推荐Technology

2026年 Top 10 AWS工具和资源推荐

2026年 Top 10 AWS工具和资源推荐 У швидко розвиваючійся сфері хмарних обчислень Amazon Web Services (AWS) завжди була лідером, пр...