**Собираем минимальный Docker образ** **Docker** — это инструмент для запуска приложений в изолированных контейнерах. Он делает разработку и развертывание проще, быстрее и безопаснее. **Нужен он для:** изоляции приложений и зависимостей, переносимости (софтина работает одинаково  на любой системе) и DevOps-процессов. **Плюсы докера:** простота развёртывания, экономия ресурсов по сравнению с виртуальными машинами, стандартизация окружения. **Минусы докера:** не подходит для задач, требующих полной виртуализации, не оптимален для GUI-приложений, требует грамотной настройки безопасности. Минимальный пример запуска первого **Docker-контейнера** с **Python** (**FastAPI**): 1. Для развертывания для начала создадим новый проект и установим зависимости. Если не имели раньше дела с питухоном питоном и докером, также скачиваем все необходимое: ```sh sudo apt install python3 python3-pip -y sudo apt install docker.io -y ``` После установки создаем рабочую папку: ```sh mkdir fastapi_backend && cd fastapi_backend ``` Активируем виртуальное окружение, чтобы изолировать зависимости проекта и с помощью команды **pip freeze** автоматически сформировать **requirements.txt**, не заполняя его вручную: ```sh python3 -m venv venv source venv/bin/activate ``` Cкачиваем необходимые для создания API зависимости с помощью пакетного менеджера pip и сохраняем их в **requirements.txt**: ```sh pip install fastapi uvicorn pip freeze > requirements.txt ``` 2. Создадим в каталоге проекта файл "**main.py**" с простым **API**: ```sh touch main.py ``` ```python from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root():     return {"Hello": "LinuxCamp"} ``` 3. Ну и наконец добавим в локальный каталог сам **Dockerfile** - это инструкция по созданию **docker** контейнера. Cейчас приведу общий пример, в следующих постах подробнее разберем его структуру: ```docker FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["uvicorn", "main:app", "--host", "127.0.0.1", "--port", "8000"] ``` 4. На этом все! Мы уже можем собрать свой **Docker-образ** и запустить его, после чего приложение будет доступно по адресу ниже: ```sh sudo docker build -t myapp . sudo docker run -d -p 8000:8000 myapp ``` ```sh curl -L http://127.0.0.1:8000  {"Hello":"LinuxCamp"} ``` http://127.0.0.1:8000 Также можно посмотреть наличие нашего docker контейнера в списке запущенных контейнеров с помощью команды **docker ps**: ```sh docker ps CONTAINER ID   IMAGE                     COMMAND              640d6f4d1acb   fastapi_backend   "uvicorn main:app --…" ```