Как и зачем запускать Redis в Docker
Опубликовано: 2023-05-02Redis — это высокодоступная база данных в памяти. Его хранилище данных типа «ключ-значение», сохраняемое на диске, идеально подходит для нескольких применений с высокой доступностью.
С другой стороны, Docker — это инструмент для контейнеризации приложений и служб, изоляции их сред и предоставления им возможности работать отдельно. Вы можете использовать Docker в качестве менеджера пакетов для приложений и служб со всеми необходимыми зависимостями, конфигурациями, сценариями и т. д. Сценарий, называемый Dockerfile, помещается внутрь контейнера Docker и позволяет развернуть контейнер как единое целое.
В этой статье вы узнаете, как эффективно использовать эти две технологии с открытым исходным кодом. В нем также рассматривается, почему запуск кластеров Redis внутри контейнеров Docker жизненно важен, а также преимущества и преимущества этого по сравнению с запуском кластеров Redis на виртуальных машинах или серверах без операционной системы.
Различные варианты использования Redis
У Redis есть несколько преимуществ. Его самые популярные применения включают в себя:
- Распределенный кэш базы данных "ключ-значение"
- Брокер сообщений
- Сервер постоянного кэширования объектов
Кроме того, Redis может поддерживать несколько типов данных и структур, что делает его пригодным для использования как в качестве основного, так и в качестве дополнительного уровня базы данных для приложений. Он также поддерживает списки, потоки, хэши, наборы и т. д.
Однако вы можете расширить преимущества Redis, поместив его в контейнер.
Redis лучше всего работает внутри контейнера
Redis — один из самых популярных образов Docker в реестре Docker с более чем миллиардом загрузок. Причина контейнеризации приложений Redis заключается в том, чтобы получить преимущества Docker и поддержку сообщества для наиболее распространенных вариантов использования Redis.
Образ Redis Docker имеет сообщество с открытым исходным кодом, которое создает и поддерживает четкую документацию. И в довершение всего, Docker очень надежен и обеспечивает простоту использования и гибкость.
Простота использования
Docker изолирует среды как для приложений, так и для служб, работающих внутри контейнеров. Изоляция означает, что вы можете упаковывать, создавать и отправлять образы Redis, которые работают независимо от операционной системы хоста, что упрощает разработку и запуск приложений Redis в Docker. Кроме того, Docker Desktop упрощает настройку согласованной локальной среды разработки, что особенно полезно для больших команд.
Безопасность:
Вы можете сканировать уязвимости безопасности с помощью Redis внутри контейнера. Docker использует Snyk, инструмент, который обеспечивает прозрачность образов Docker. Он сканирует контейнеры Docker и предоставляет подробную информацию и исправление в случае повреждения образов. Docker также может генерировать спецификацию программного обеспечения (SBOM) для сканирования всех зависимостей, используемых при создании образов контейнеров, хотя это все еще экспериментально.
Гибкость
Docker доступен для большинства операционных систем и приложений на базе Unix и Windows. Поскольку вы используете контейнеры для изоляции программного обеспечения от его среды, чтобы обеспечить его работу со всеми системами, приложения и службы Redis всегда работают независимо от инфраструктуры.
Надежность
Docker позволяет надежно запускать любую контейнерную рабочую нагрузку в любой среде. Redis надежен в Docker, поскольку контейнеры Docker периодически делают снимки образа контейнера, что позволяет вам вернуться к этим снимкам в случае плохой или поврежденной базы данных. Вы также можете создать том Docker, смонтировав внутри контейнера каталог, содержащий файл базы данных Redis.
Том Docker помогает защитить контейнер от любой формы случайной потери данных. Однако нужно учитывать, что тома Docker не включают моментальные снимки образов. Вы должны периодически вручную сохранять или создавать резервные копии данных в файле базы данных Redis.
Как использовать Redis с Docker
Чтобы поместить ваш магазин Redis в контейнер Docker, вы должны иметь Docker в целевой среде. Следующие инструкции показывают, как установить Docker в Windows.
Вы можете следовать руководству на веб-сайте Docker для Unix или ОС на базе Unix. После установки и настройки вы можете создать сеть внутри контейнера Docker. Затем вы можете установить Redis и создать базу данных. Наконец, вы можете выполнять операции с базой данных Redis.
Сначала установите Docker в вашей операционной системе. При желании перейдите в Docker Hub и создайте учетную запись. Вам нужна учетная запись для создания и публикации изображений.
После создания учетной записи войдите в Docker Hub и загрузите последнюю версию Docker Desktop для вашей операционной системы.
После процедуры установки перейдите в окно терминала, чтобы увидеть, готов ли Docker Engine к запуску, и введите следующую команду:
docker --version
Затем введите: docker-compose --version
.
Compose — это инструмент для определения и запуска многоконтейнерных приложений Docker с использованием файлов YAML, которые вы используете для настройки служб приложений.
Вы можете запустить Dockerized Redis, чтобы убедиться, что Docker Engine запущен и работает, используя приведенный ниже код. В этом примере образ Redis запускается из Docker Hub и называется my-redis-container .
docker run --name my-redis-container -d redis
Поскольку у вас нет локального образа, Docker извлекает образ Redis из Docker Hub.
Теперь вы можете открыть Docker Desktop, чтобы убедиться, что он извлек образ Redis. На панели инструментов нажмите «Изображения» на панели слева.
Теперь вы можете создать сеть. Обратите внимание, что драйвер Docker использует мост или встроенные сетевые драйверы наложения для создания сети Docker. Вы также можете установить и использовать сторонний сетевой драйвер.
Разница заключается в том, что мостовые сети изолированы на одной установке Docker Engine, а оверлейные сети охватывают несколько хостов Docker, на каждом из которых работает ядро.
Тип:
docker network create -d bridge kinsta-demo-network
Если вы не укажете какие-либо драйверы по умолчанию, Docker использует драйвер моста для создания новой сети, поскольку он автоматически создает драйвер моста при установке Docker Engine. Однако если вы запустите контейнер Docker с помощью команды запуска Docker, он не будет использовать эту сеть.
Теперь, когда у вас есть сеть, следующим шагом будет установка Redis внутри контейнера Docker. Для этого введите: docker pull redis
.
Чтобы убедиться, что образ Redis установлен правильно, выполните одну из следующих команд:
docker images
docker image ls
Затем вы создаете и запускаете контейнер Redis. Для этого выполните следующую команду:
docker run -it –name dev_kinsta_redis_container -d redis
Теперь убедитесь, что Redis работает в контейнере. Для этого введите: docker ps
.
Теперь, когда вы убедились, что ваш контейнер Docker запущен и работает, вы можете добавить контейнер в сеть. Тип: docker network connect
.
Когда все работает, как и ожидалось, следующим шагом будет проверка того, что ваш сервер Redis, работающий внутри Docker, готов принимать соединения. Для этого используйте docker logs
.
Затем вы должны создать базу данных, потому что вам нужен способ подключения к контейнеру Redis для выполнения команд на сервере. Для этого введите: docker exec -it bash
. Вы можете использовать имя контейнера и идентификатор контейнера взаимозаменяемо.
В контейнере используйте CLI для запуска команд. Обратите внимание, что Redis автоматически установил хосты Docker. Чтобы использовать Redis-CLI, введите: redis-cli
.
Это подключит вас к порту по умолчанию для Redis на локальном хосте. Введите: ping
, и ответ должен быть pong
.
Затем выберите базу данных на вашем сервере Redis, набрав select
. Хотя база данных по умолчанию — 0
, выберите db 1
.
Далее вносим данные в базу. Используйте команду Redis SET
. Для этого введите SET <key> <value>
.
Например:
SET mykey "Hello"
Чтобы получить тот же ключ, введите:
get myKey
Чтобы получить значение ключа, запустите get
. Это возвращает значение. Затем отслеживайте свою базу данных Redis, набрав MONITOR
.
Наконец, остановите сервер Redis, выйдя из CLI. Дважды введите exit
, чтобы выйти из CLI и Redis.
Наконец, остановите запуск контейнера Redis, набрав docker stop
.
Redis с DevKinsta
DevKinsta позволяет подключить сайт WordPress к базе данных Redis. С DevKinsta надстройка Redis без проблем работает как кеш объектов для сохранения данных при нескольких загрузках страниц. Это означает, что с помощью надстройки Redis вы можете использовать кеш для повторного использования объектов вместо того, чтобы постоянно запрашивать базу данных MySQL.
После загрузки и настройки DevKinsta установите рабочий стол Docker в качестве зависимости, которую он использует для создания файлов локальной среды внутри контейнера. С помощью этой настройки вы можете настроить надстройку Redis в Devkinsta.
Поэтому надстройку Redis для DevKinsta можно использовать в качестве вторичного источника, снижая нагрузку на первичную базу данных, увеличивая время отклика и ускоряя работу приложения.
Это приводит к тому, что приложение обрабатывает больше нагрузки и эффективно масштабируется. Прочтите этот пост, чтобы использовать плагин Redis на своем веб-сайте.
Краткое содержание
Запуск Redis внутри контейнера Docker дает много преимуществ. Он предлагает изолированную среду для ваших приложений, поэтому вам больше не нужно заботиться о платформе, на которой вы развертываете свои приложения. Кроме того, Docker обеспечивает простоту использования, гибкость и высокую надежность.
Что касается безопасности, вы можете проверить и сканировать уязвимости безопасности из коробки с помощью Synk, инструмента, обеспечивающего видимость безопасности образов Docker. Что касается гибкости, Docker работает с большинством операционных систем и приложений на базе Unix и Windows. Эта гибкость означает, что докеризованные или контейнеризованные приложения или службы всегда работают независимо от ОС.
Docker и надстройку Redis легко использовать с DevKinsta, которая запускает докеризированный сайт WordPress локально при его запуске. Ознакомьтесь с DevKinsta и надстройкой Redis, чтобы получить всю мощь Redis в Docker уже сегодня.