Частое заблуждение:
Docker запускает один контейнер, а Docker Compose - несколько.
Спешу огорчить: это вообще не так
Обычный Docker тоже может запускать сколько угодно контейнеров:

docker run postgres
docker run redis
docker run nginx
docker run myapp

Проблема начинается тогда, когда проект состоит из нескольких сервисов.
Вам нужно помнить десятки параметров:
⭐️порты;
⭐️переменные окружения;
⭐️тома;
⭐️сети;
⭐️порядок запуска контейнеров.
И каждый раз запускать всё вручную👀
А вот Docker Compose уже решает эту проблему.
Вместо набора команд вы описываете инфру проекта в одном файле:

services:
postgres:
redis:
backend:
frontend:

После чего запускаете всё одной командой:

docker compose up -d
Compose сам:
⭐️создаст сеть между контейнерами;
⭐️поднимет нужные сервисы;
⭐️подключит тома;
⭐️пробросит порты;
⭐️сохранит конфигурацию проекта.
Подытожим:
📌Docker — инструмент для работы с отдельными контейнерами.
📌Docker Compose — инструмент для управления группой контейнеров как единым приложением.
Поэтому для обучения достаточно Docker, а для большинства реальных проектов почти всегда используется Docker Compose🤝😉