Docker で Redis を実行する方法と理由

公開: 2023-05-02

Redis は、可用性の高いインメモリ データベースです。 そのディスク永続キー値データ ストアは、複数の高可用性用途に最適です。

一方、Docker は、アプリケーションとサービスをコンテナー化し、環境を分離して個別に実行できるようにするためのツールです。 必要なすべての依存関係、構成、スクリプトなどを含むアプリケーションとサービスのパッケージ マネージャーとして Docker を使用できます。Dockerfile と呼ばれるスクリプトが Docker コンテナー内に配置され、コンテナーを単一のエンティティとしてデプロイできます。

この記事では、これら 2 つのオープンソース テクノロジを効果的に使用する方法を説明します。 また、Docker コンテナー内で Redis クラスターを実行することが重要である理由と、仮想マシンまたはベア メタル サーバーで Redis クラスターを実行する場合と比較して、そうすることの利点と利点についても触れています。

Redis のさまざまな用途

Redis にはいくつかの利点があります。 その最も一般的な用途は次のとおりです。

  • 分散型のキー値データベース キャッシュ
  • メッセージブローカー
  • 永続オブジェクト キャッシュ サーバー

さらに、Redis は複数のデータ型と構造をサポートできるため、アプリケーションのプライマリ データベース層とセカンダリ データベース層の両方として使用するのに適しています。 リスト、ストリーム、ハッシュ、セットなどもサポートしています。

ただし、Redis をコンテナー化することで、Redis の利点をさらに押し進めることができます。

Redis はコンテナー内で最適です! Redis と Docker を効果的に使用し、Redis アプリをコンテナ化する利点を解き放つ方法を学びましょう - すべてこの投稿で ️ Click to Tweet

Redis はコンテナー内で最適です

Redis は、Docker レジストリで最も人気のある Docker イメージの 1 つであり、ダウンロード数は 10 億回を超えています。 Redis アプリケーションをコンテナ化する理由は、最も一般的な Redis のユース ケースに対する Docker の利点とコミュニティ サポートを得るためです。

Redis Docker イメージには、明確なドキュメントを作成および維持するオープンソース コミュニティがあります。 さらに、Docker は信頼性が高く、使いやすさと柔軟性を実現します。

使いやすさ

Docker は、コンテナー内で実行されるアプリとサービスの両方の環境を分離します。 分離とは、ホスト オペレーティング システムに関係なく動作する Redis イメージをパッケージ化、ビルド、および出荷できることを意味します。これにより、Docker 内での Redis アプリケーションの開発と実行が容易になります。 さらに、Docker Desktop は一貫したローカル開発環境のセットアップを簡素化します。これは、特に大規模なチームに役立ちます。

安全:

コンテナー内の Redis を使用して、セキュリティの脆弱性をスキャンできます。 Docker は、Docker イメージの安全性を可視化するツールである Snyk を使用します。 Docker コンテナーをスキャンし、破損したイメージの場合に詳細と修復を提供します。 Docker は、コンテナー イメージの構築に使用されるすべての依存関係をスキャンするためのソフトウェア部品表 (SBOM) を生成することもできますが、まだ実験段階です。

柔軟性

Docker は、ほとんどの Unix ベースおよび Windows オペレーティング システムとアプリケーションで利用できます。 コンテナーを使用してソフトウェアをその環境から分離し、すべてのシステムで確実に機能するようにするため、Redis アプリとサービスはインフラストラクチャに関係なく常に実行されます。

信頼性

Docker を使用すると、コンテナ化されたワークロードをあらゆる環境で確実に実行できます。 Docker コンテナーは定期的にコンテナー イメージのスナップショットを作成し、データベースが不良または破損した場合にこれらのスナップショットに戻すことができるため、Redis は Docker で信頼性があります。 コンテナー内の Redis データベース ファイルを含むディレクトリをマウントすることで、Docker ボリュームを作成することもできます。

Docker ボリュームは、偶発的なデータ損失からコンテナーを安全に保つのに役立ちます。 ただし、Docker ボリュームにはイメージのスナップショットが含まれていないことに注意してください。 Redis データベース ファイルのデータを定期的に手動で保存またはバックアップする必要があります。

Docker で Redis を使用する方法

Redis ストアを Docker コンテナー内に配置するには、ターゲット環境に Docker が必要です。 次の手順は、Windows に Docker をインストールする方法を示しています。

Unix または Unix ベースの OS については、Docker Web サイトのガイドに従うことができます。 インストールと構成が完了したら、Docker コンテナー内にネットワークを作成できます。 その後、Redis をインストールしてデータベースを作成できます。 最後に、Redis データベースで操作を実行できます。

まず、オペレーティング システムに Docker をインストールします。 必要に応じて、Docker Hub に移動し、アカウントを作成します。 画像を作成して公開するには、アカウントが必要です。

Docker Hub サインアップ フォーム
Docker ハブ

アカウントを作成したら、Docker Hub にサインインし、オペレーティング システムの最新バージョンの Docker Desktop をダウンロードします。

オペレーティング システムのオプションを含む Docker Desktop のダウンロード ページ。
Dockerダウンロードページ

インストール手順の後、ターミナル ウィンドウに移動して、Docker エンジンを実行する準備ができているかどうかを確認し、次のコマンドを入力します。

 docker --version
インストールされている Docker のバージョンを確認する
インストールされている Docker バージョン

次に、 docker-compose --version入力します。

Docker でインストールされている Compose のバージョンを確認する
Docker でインストールされた Compose

Compose は、アプリケーション サービスの構成に使用する YAML ファイルを使用してマルチコンテナー Docker アプリケーションを定義および実行するためのツールです。

以下のコードを使用して、Dockerized Redis を実行し、Docker Engine が稼働していることを検証できます。 この例では、Docker Hub から Redis イメージを実行し、 my-redis-containerという名前を付けます。

 docker run --name my-redis-container -d redis
my-redis-container という名前の Docker Hub から Redis イメージを実行します
my-redis-container という名前の Docker Hub からの Redis イメージ

ローカルにイメージがないため、Docker は Docker Hub から Redis イメージをプルします。

これで、Docker Desktop を開いて、Redis イメージがプルされたことを確認できます。 ダッシュボードで、左側のパネルの[画像]をクリックします。

Redis イメージが Docker Desktop から起動して実行されていることを確認します
Docker デスクトップ

これで、ネットワークを作成できます。 Docker ドライバーは、ブリッジまたはオーバーレイ組み込みネットワーク ドライバーを使用して Docker ネットワークを作成することに注意してください。 サードパーティのネットワーク ドライバをインストールして使用することもできます。

違いは、ブリッジ ネットワークは単一の Docker エンジン インストールで分離されているのに対し、オーバーレイ ネットワークは複数の Docker ホストにまたがり、それぞれがエンジンを実行していることです。

タイプ:

 docker network create -d bridge kinsta-demo-network
ブリッジ ドライバーを使用して新しい Docker ネットワークを作成する
ブリッジ ドライバーを使用した Docker ネットワーク

デフォルトでドライバーを指定しない場合、Docker エンジンのインストール時にブリッジ ドライバーが自動的に作成されるため、Docker はブリッジ ドライバーを使用して新しいネットワークを作成します。 ただし、Docker run コマンドを使用して Docker コンテナーを実行する場合、このネットワークは使用されません。

ネットワークができたので、次は Docker コンテナー内に Redis をインストールします。 これを行うには、次のように入力します: docker pull redis

Docker Hub から Redis イメージをプルする
Docker Hub から Redis イメージをプルする

Redis イメージが正しくインストールされていることを確認するには、次のいずれかのコマンドを実行します。

 docker images
 docker image ls
ユーザーのターミナルで利用可能な Docker イメージを一覧表示する
ユーザーの端末で利用可能な Docker イメージ


次に、Redis コンテナーを作成して開始します。 これを行うには、次のコマンドを実行します。
 docker run -it –name dev_kinsta_redis_container -d redis
Docker コンテナーを作成して実行する
Docker コンテナ

Redis がコンテナーで実行されていることを確認します。 これを行うには、 docker psと入力します。

コンテナーで Redis が稼働していることを確認する
コンテナーで Redis が稼働していることを確認する

Docker コンテナーが稼働していることを確認したので、コンテナーをネットワークに追加できます。 タイプ: docker network connect

作成した docker ネットワークに Docker コンテナを追加する
作成した docker ネットワークに Docker コンテナを追加する

すべてが期待どおりに機能しているので、次のステップは、Docker 内で実行されている Redis サーバーが接続を受け入れる準備ができていることを確認することです。 これを行うには、 docker logsを使用します。

Redis イメージが Docker コンテナー内で実行されていることを確認する
Redis イメージが Docker コンテナー内で実行されていることを確認する

次に、サーバー上でコマンドを実行するために Redis コンテナーに接続する方法が必要なため、データベースを作成する必要があります。 これを行うには、 docker exec -it bashと入力します。 コンテナー名とコンテナー ID は同じ意味で使用できます。

Redis コンテナー インスタンスに接続する
Redis コンテナー インスタンスに接続します。

コンテナーで、CLI を使用してコマンドを実行します。 Redis は Docker ホストを自動的にインストールすることに注意してください。 Redis-CLI を使用するには、 redis-cliと入力します。

Redis CLI を使用して Redis コマンドを実行する
Redis CLI を使用して Redis コマンドを実行する

これにより、ローカル ホスト上の Redis のデフォルト ポートに接続されます。 タイプ: ping 、応答はpongである必要があります。

Redis 接続が稼働しているかどうかをテストします
Redis 接続が稼働しているかどうかをテストします

次に、 selectと入力して、Redis サーバー内のデータベースを選択します。 デフォルトのデータベースは0ですが、 db 1を選択します。

特定の Redis データベースを選択する
特定の Redis データベースを選択する

次に、データベースにデータを挿入します。 Redis SETコマンドを使用します。 これを行うには、 SET <key> <value>と入力します。

例えば:

 SET mykey "Hello"

同じキーを取得するには、次のように入力します。

 get myKey
Redis からのデータの挿入と取得
Redis からのデータの挿入と取得

キーの値を取得するには、 getを実行します。 これは値を返します。 次に、 MONITORと入力して Redis データベースを監視します。

Redis データベースを監視する
Redis データベースを監視する

最後に、CLI を終了して Redis サーバーを停止します。 exit 2 回入力して、CLI と Redis を終了します。

Redis CLI を終了する
Redis CLI を終了する

最後に、 docker stopと入力して、Redis コンテナーの実行を停止します。

コマンドを実行して、Docker コンテナーの実行を停止します。
コマンドを実行して、Docker コンテナーの実行を停止します。

DevKinsta を使用した Redis

DevKinsta を使用すると、WordPress サイトを Redis データベースに接続できます。 DevKinsta を使用すると、Redis アドオンはオブジェクト キャッシュとしてシームレスに機能し、複数のページの読み込み間でデータを保持します。 これは、Redis アドオンを使用することで、常に MySQL データベースにクエリを実行する代わりに、キャッシュを使用してオブジェクトを再利用できることを意味します。

DevKinsta をダウンロードしてセットアップした後、コンテナー内にローカル環境ファイルを作成するために使用する依存関係として Docker デスクトップをインストールします。 この設定により、Devkinsta で Redis アドオンを構成できます。

したがって、DevKinsta の Redis アドオンをセカンダリ ソースとして使用して、プライマリ データベースの負荷を軽減し、応答時間を増やし、アプリケーションの動作を高速化できます。

これは、アプリがより多くの負荷を処理し、効率的にスケーリングすることにつながります。 この投稿をチェックして、Web サイトで Redis プラグインを使用してください。

Redis + Docker = 最高の組み合わせです! ここでは、Redis アプリのコンテナー化が進むべき道である理由と、それを最大限に活用する方法について説明します。 クリックしてツイート

まとめ

Docker コンテナー内で Redis を実行することには、多くの利点があります。 アプリケーションにサンドボックス環境を提供するため、アプリケーションをデプロイするプラットフォームを気にする必要がなくなります。 さらに、Docker は使いやすさ、柔軟性、および高い信頼性を実現します。

セキュリティに関しては、Docker イメージの安全性を可視化するツールである Synk を使用して、すぐにセキュリティの脆弱性をチェックしてスキャンできます。 柔軟性に関しては、Docker はほとんどの Unix ベースおよび Windows オペレーティング システムとアプリケーションで動作します。 この柔軟性は、OS に関係なく、dockerized またはコンテナー化されたアプリまたはサービスが常に実行されることを意味します。

Docker と Redis アドオンを DevKinsta で使用するのは簡単です。DevKinsta は、起動時に Docker 化された WordPress サイトをローカルで起動します。 DevKinsta と Redis アドオンをチェックして、今すぐ Docker で Redis の機能を活用してください。