Запуск redis в контейнере Docker

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

В этой статье покажу, как запустить Redis на примере версии 7.2 в контейнере Docker, проверить его работу и выполнить базовые операции с контейнером.

Зачем запускать Redis в контейнере, а не как сервис на хосте

Установка Redis как системного сервиса (через apt, systemd и т.п.) — классический подход, но у контейнеров есть несколько практичных преимуществ.

1. Разные версии одновременно.
В одном контейнере может работать Redis 4.0, в другом — 7.2, а на хосте при этом не будет конфликтов пакетов и библиотек. Это особенно полезно, когда одно приложение требует старую версию, а другое — новую.

2. Чистота хоста.
Контейнер не оставляет после себя конфигов в /etc, данных в /var/lib и записей в systemd. Удалили контейнер — и от Redis не осталось следов. Хост-система остаётся чистой.

3. Быстрый старт и лёгкое удаление.
Одна команда docker run — и Redis работает. Одна команда docker rm -f — и его нет. Не нужно останавливать сервис, удалять пакеты и чистить зависимости.

4. Переносимость.
Один и тот же контейнер с Redis одинаково работает на ноутбуке разработчика, в CI и на продакшен-сервере. Не нужно беспокоиться о различиях в версиях ОС и настройках.

5. Гибкая конфигурация и изоляция.
Параметры можно передавать через переменные окружения, монтировать конфиг и данные. Каждый экземпляр Redis изолирован, можно ограничить потребление памяти и CPU.

6. Удобство для тестирования и CI.
В тестах можно поднять Redis в контейнере на несколько секунд, прогнать сценарии и удалить его. Это быстрее и надёжнее, чем настраивать сервис на CI-агенте.

7. Масштабирование и микросервисы.
Если у вас несколько сервисов, каждому можно дать свой Redis в отдельном контейнере. А с Docker Compose или Kubernetes — управлять ими централизованно.

Когда всё же лучше установить Redis как сервис?
Если Redis — единственное приложение на сервере, и вы хотите максимальную производительность без накладных расходов контейнеризации. Или если нужен тонкий контроль над системными ресурсами и интеграция с systemd. Но в большинстве случаев контейнер даёт больше гибкости и меньше проблем с сопровождением.

Что понадобится

  • Установленный Docker.
  • Свободный порт 6379 на хосте.
  • По желанию — redis-cli, установленный локально, для проверки подключения.

Запуск Redis в Docker

Запустите контейнер Redis в фоновом режиме с пробросом порта 6379 на хост:

Разберём команду:

  • docker run — создаёт и запускает новый контейнер;
  • -d — запускает контейнер в фоновом режиме;
  • --name my-redis — задаёт имя контейнера my-redis;
  • -p 6379:6379 — пробрасывает порт 6379 с хоста в контейнер;
  • redis:7.2 — указывает образ Redis версии 7.2.

Если образа redis:7.2 ещё нет локально, Docker автоматически скачает его из реестра.

Проверка, что контейнер работает

Убедитесь, что контейнер запущен:

В выводе вы должны увидеть строку с именем my-redis и статусом Up. Это значит, что контейнер работает.

Если команда ничего не вывела, проверьте все контейнеры, включая остановленные:

Проверка подключения к Redis

Самый простой способ проверить Redis — отправить команду ping через redis-cli внутри контейнера:

Если redis-cli установлен на хосте, можно проверить подключение напрямую:

В обоих случаях ожидаемый ответ:

Если вы получили PONG, значит Redis запущен и отвечает на запросы.

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

Остановить Redis:

Запустить остановленный контейнер снова:

Посмотреть логи:

Удалить контейнер:

Дополнительно: сохранение данных

По умолчанию данные Redis могут потеряться при удалении контейнера. Чтобы сохранить их между перезапусками, подключите том:

Здесь redis-data — именованный том Docker, который будет хранить данные Redis в каталоге /data внутри контейнера.

Если порт 6379 уже занят

Можно пробросить другой порт на хосте. Например, чтобы Redis был доступен на порту 6380:

Тогда подключаться к нему нужно будет через порт 6380.

Мало букафф? Читайте есчо !

Настройка подключения к mysql внутри Docker контейнера

Февраль 23, 2022 г.

Допустим, вы скомпоновали несколько образов для работы, и один из них это контейнер с php, а другой - с базой данных mySQL. Как настроить подключение к базе для кода в php? Ясно, что имя хоста будет зависеть от настроек, которые вы задали в docker-compose.yml. ...

Читать
 

Комментарии к «Запуск redis в контейнере Docker»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: