← Назад ко всем вопросам

В чем разница между Docker образом и контейнером

1️⃣ Как кратко ответить

Docker образ — это шаблон, содержащий все необходимое для запуска приложения, включая код, библиотеки и зависимости. Контейнер — это запущенный экземпляр образа, который изолирован и работает в своей среде.

2️⃣ Подробное объяснение темы

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

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

Пример Dockerfile:

# Используем базовый образ Python
FROM python:3.8-slim
​
# Устанавливаем рабочую директорию
WORKDIR /app
​
# Копируем файлы приложения в контейнер
COPY . /app
​
# Устанавливаем зависимости
RUN pip install --no-cache-dir -r requirements.txt
​
# Определяем команду для запуска приложения
CMD ["python", "app.py"]
  • FROM python:3.8-slim: указывает базовый образ, на основе которого будет создан новый образ.
  • WORKDIR /app: устанавливает рабочую директорию внутри контейнера.
  • COPY . /app: копирует файлы из текущей директории на хосте в директорию /app внутри контейнера.
  • RUN pip install --no-cache-dir -r requirements.txt: устанавливает зависимости, указанные в requirements.txt.
  • CMD ["python", "app.py"]: определяет команду, которая будет выполнена при запуске контейнера.

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

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

docker run -d -p 5000:5000 my-python-app
  • docker run: команда для запуска нового контейнера.
  • -d: запускает контейнер в фоновом режиме (detached mode).
  • -p 5000:5000: связывает порт 5000 на хосте с портом 5000 в контейнере, что позволяет доступ к приложению извне.
  • my-python-app: имя образа, из которого будет создан контейнер.

Тема: Инструменты: Postman, Swagger, Charles и др
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки