Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзу ВвИТ 2 сем 1 курс.docx
Скачиваний:
0
Добавлен:
17.06.2026
Размер:
7.37 Mб
Скачать

Контейнеризация и Docker

6) Какую проблему решает Docker и как контейнеризация помогает обеспечить одинаковую работу приложения в разных средах: на компьютере разработчика, в тестовой среде и на сервере?

Docker — платформа для упаковки приложения со всеми зависимостями в изолированной сети. Он позволяет решить проблему конфликтов зависимостей, недостатка или разных версий системных пакетов, и в принципе невозможности запуска какого либо приложения из за различий системы, на которой это приложение запускается.

Контейнеризация выполняет функции:

  • Воспроизводимость: одинаковый образ → одинаковый результат

  • Изоляция: зависимости проекта не ломают систему и не конфликтуют с другими проектами

  • Быстрый старт

  • Портативность — один Image переносится на любую машину с Docker

  • Управляемость — версии окружения фиксируются в Dockerfile / compose.yml

  • Масштабирование и деплой — проще сделать релизы, откатывать версии, запускать несколько экземпляров

  • Командная разработка

Приложение неотделимо от окружения: ОС, библиотеки, настройки, переменные, сервисы, права доступа, сеть. Для решения проблемы различий окружений на компьютерах используется контейнеризация.

7) Сравните виртуальные машины и контейнеры: что они изолируют, какие имеют преимущества и ограничения.

Виртуальная машина изолирует целую ОС. Сильнее изоляция, можно запускать разные ОС с разными ядрами. Тяжелее, дольше старт, сложнее обновлять/масштабировать.

Контейнер изолирует процессы и окружение приложения. Легче, стартует быстро, плотнее упаковка, удобно для микросервисов и CI/CD.

Контейнеризация дает воспроизводимость (одинаковый образ → одинаковый результат), изоляцию (зависимости проекта не ломают систему и не конфликтуют с другими проектами), быстрый старт (клон репозитория → “docker compose up” вместо многостраничного README), портативность (один образ переносится на любую машину с Docker), управляемость (версии окружения фиксируются в Dockerfile / docker_compose.yml), масштабирование и деплой (проще сделать релизы, откатывать версии, запускать несколько экземпляров), командная разработка (меньше “магии” и ручных шагов — больше стандарта), короткая формула (контейнеризация превращает “настроить среду” в “собрать и запустить образ”).

8) Объясните различия между Docker image, container и registry. Как они связаны в жизненном цикле приложения?

Image (образ) — шаблон для запуска: файловая система + зависимости + настройки запуска, собран из слоев и доступен только для чтения. Идентифицируется как name:tag (например, python:3.12-slim) или по digest. Формула: образ = <что_запускаем>

Container (контейнер) — запущенный экземпляр образа (image + runtime-настройки), имеет свой ID, сеть, переменные, подключенные тома, может изменять свое состояние (но обычно контейнеры делают одноразовыми (проще пересоздать, чем чинить вручную)). Формула: контейнер = <образ_в_работе>

Registry (реестр) — публичное/приватное хранилище образов (откуда их доставать и куда отправлять), например Docker Hub, GitLab Registry и тд. Внутри: repositories и tags (версии образов) Формула: registry = <где_лежат_образы>

Связка: собрали Image (docker build) → залили в registry (docker push) → на сервере скачали Image (docker pull) → запустили container (docker run / docker compose up)

9) Что такое Dockerfile? Объясните назначение команд FROM, WORKDIR, COPY, RUN, CMD и роль слоёв образа при сборке.

Dockerfile — «рецепт», по которому Docker собирает образ. Минимальный набор команд позволяет: выбрать базу, задать рабочую папку, скопировать файлы и выполнить подготовку / установку зависимостей.

FROM — базовый образ, с которого начинается сборка

WORKDIR — рабочая директория внутри образа

COPY — копировать файлы из build context в образ

RUN — выполнить команду во время сборки

CMD — команда по умолчанию, если в docker run не указана никакая команда, в обратном случае полностью заменяется на указанную команду.

Пример:

FROM python:3.12-slim # Базовый образ

WORKDIR /app # Рабочая директория

COPY requirements.txt # Файлы из папки сборки (контекста) кладет в образ

RUN pip install –no-cache-dir -r requirements.txt # Команда во время сборки

COPY . .

Слои образа (layers): образ собирается послойно — почти каждая инструкция в Dockerfile создает новый слой. Каждый слой — снимок изменений файловой системы относительно предыдущего. Слои переиспользуются разными образами.