Redis を Docker コンテナとして素早くデプロイする方法

Redis を Docker コンテナとして素早くデプロイする方法

Redis は、高性能な抽象データ構造を保持できるメモリ内キー値ストアです。オープンソース ソフトウェアは、データベース、メッセージング、キャッシュ機能によく使用されます。

Docker は、アプリケーションをコンテナにパッケージ化するための主要なツールキットです。これにより、ソフトウェア コンポーネントを独自のファイル システムを持つ独立した環境に分離できます。

このガイドでは、Docker を使用して、Docker Hub の公式イメージを使用して Redis をすばやくデプロイします。 Docker を使用すると、ベアメタル インストールに比べてセットアップ プロセスがはるかに簡単になり、新しいパッケージでホスト マシンが汚染されることもありません。続行する前に、ホスト マシンに機能する Docker がインストールされていることを確認してください。

はじめる

Redis イメージには、サーバー コンポーネントと公式 CLI が含まれています。新しいコンテナを起動すると、デフォルトの構成値を実行してサーバーを起動するように事前構成されています。

さまざまな Redis バージョン (5.0 および 6.0) とオペレーティング システム (Alpine および Debian) をカバーするイメージのバリアントが用意されています。タグのリストを参照して、環境に最適なオプションを見つけてください。

最も単純な展開は次のとおりです。

docker run --name redis -d -p 6379:6379 redis:6.0

これにより、Redis 6.0 を実行する redis という新しいコンテナが起動します。 -d フラグはコンテナからデタッチするために使用されます。 docker stop redis を使用して停止するまで、サーバーはバックグラウンドで実行され続けます。

Redis はデフォルトでポート 6379 をリッスンします。 -p フラグは、このポートをホストにバインドします。アプリケーションは localhost:6379 で Redis にアクセスできるようになります。これは安全ではないことに注意してください。マシンがインターネットに公開されている場合、誰でも Redis データにアクセスできます。

データストレージ

Redis は、メモリ内データベースをディスクに保存するためのいくつかの永続化メカニズムをサポートしています。データはコンテナ内の /data ディレクトリに保存されます。 Docker コンテナは一時的なものであるため、ボリュームをこのディレクトリにマウントする必要があります。そうしないと、コンテナが停止したときにデータが失われます。

docker run --name redis -d \
    -v redis-データ:/データ
    redis:6.0 --save 60 1

--save フラグが Redis サーバーに渡されます。使用する永続化戦略を構成します。この例では、データベース スナップショットを 1 秒ごとに 60 個書き込みます。最後のスナップショット以降に 1 回のデータベース書き込みが発生しない限り、この操作はスキップされます。

-v フラグによって、redis-data という Docker ボリュームが作成されます。これにより、データはコンテナの外部に保存され、再起動後もアクセス可能になります。ボリュームは、docker volumes rm redis-data を実行して削除されるまで存在します。

サーバーを構成する

構成パラメータを追加する最も簡単な方法は、docker run コマンドの一部として CLI パラメータを Redis サーバーに渡すことです。上記の –save の例がこれを示しています。 docker run 内のイメージ名の後の部分は、コンテナ内で実行されるコマンドに渡されます。 Redis イメージの場合、コマンドは Redis サーバーです。

CLI フラグを使用すると、すぐに繰り返し作業が必要になる場合があります。パスをサーバーの最初の引数として渡すことで、Redis に設定ファイルを使用させることができます。このファイルは通常、/usr/local/etc/redis/redis.conf にあります。Docker を使用して、コンテナーにマウントされたローカル ファイル システムから redis.conf をバインド マウントします。

docker run --name redis -d \
    -v redis-データ:/データ
    ローカルディレクトリのredis-confに以下の行を追加します。
    redis:6.0 /usr/local/etc/redis.conf

作業ディレクトリの redis-conf 内に redis.conf を配置します。 Docker はこのパスをコンテナにマウントし、Redis が docker run コマンドで指定されたファイルにアクセスできるようにします。

Redis セキュリティの管理

デフォルトでは、Redis Docker イメージは Redis を非保護モードで実行するように構成されています。これにより、Docker ネットワークを使用して他の Docker コンテナから Redis サーバーに簡単にアクセスできるようになります。ただし、これは、コンテナーにアクセスできるものはすべてデータに完全にアクセスできることも意味します。

保護モードは、ホストのループバック アドレス (localhost など) から発行された認証されていないクエリにのみ応答する Redis の機能です。これを有効にするには、redis.conf に protected-mode yes を追加します。Docker 化されたインストールで使用すると、Redis は独自のコンテナー内でのみアクセス可能になり、通常は理想的ではありません。

これを有効にするには、redis.conf に requirepass の例を追加します。Redis は、設定されたパスワードを提供するクライアントからのクエリのみを受け入れます。 Redis 6 は、より充実した機能のアクセス制御もサポートしており、異なる権限を持つ複数のユーザー アカウントを設定できます。

認証を使用するには、前のセクションの手順に従って Redis 構成ファイルを作成し、コンテナーにマウントします。パスワードを設定したくない場合は、アプリケーションに必要な Docker ネットワークに参加するだけでインストールを保護できます。最初に認証を設定せずにポート 6379 をホストにバインドしないでください。

Redisインストールの使用

Redis が完全にセットアップされたので、クライアントからアクセスできるようになりました。ホストから接続する場合は、Docker コンテナの IP (docker inspect redis を実行すると表示され、コンテナ名に応じて調整されます) とポート 6379 を使用できます。

別の Docker コンテナから Redis にアクセスするには、両方のコンテナを Docker ネットワークに参加させるのが最適です。

docker ネットワーク Redis の作成
docker run --name redis --network redis -d redis:6.0
docker run --name api --network redis -d my-api:latest

これで、アプリケーション コンテナーは、redis ホスト名のポート 6379 で Redis にアクセスできるようになります。 Docker ネットワークを共有する場合、Docker はコンテナ名をホスト名としてアクセスできるようにします。

ここに画像の説明を挿入

コンテナ イメージに含まれている redis-cli バイナリを使用して、データベースを手動で操作できます。コンテナをデタッチモード ( -d ) で起動し、バックグラウンドで実行します。次に、docker exec を使用して redis-cli コマンドを実行します。

docker exec -it redis コンテナ redis-cli

これにより、コンテナ内で Redis CLI セッションが開始されます。

まとめ

Docker を使用すると、マシンにソフトウェアをインストールしなくても、新しい Redis インスタンスをすばやく簡単に起動できます。公式の Docker イメージを使用してコンテナを起動し、ニーズに合わせてコマンド フラグを追加するか、構成ファイルをマウントします。

常に念頭に置くべき 2 つの点は、ストレージとセキュリティです。Redis の永続化機能を使用する必要がある場合は、データの損失を防ぐために Docker ボリュームを使用する必要があります。 Docker 化された Redis はデフォルトで非保護モードに設定されており、認証を必要としないため、ポート 6379 を公開すると最悪の場合悲惨な結果を招く可能性があることに注意してください。

Redis を Docker コンテナとして素早くデプロイする方法についての記事はこれで終わりです。Redis を Docker コンテナとしてデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerコンテナにRedisをデプロイする手順の紹介

<<:  ウェブページのフォント設定についての簡単な説明

>>:  CSS3 を使用した背景ぼかし効果の 3 つの例

推薦する

innodb_flush_method 値メソッド (例の説明)

innodb_flush_methodのいくつかの典型的な値 fsync: InnoDB は fs...

CentOS 8で自動更新を設定するための手順を完了する

データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...

CSSスタイルとセレクターの使い方

HTML で CSS を使用する 3 つの方法: 1. インラインスタイル: 要素のスタイル属性を通...

Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意

/******************** * カーネルにおけるリンクリストの応用********...

nginx のロードバランシングとリバースプロキシの説明

目次負荷分散負荷分散分類1. DNS 負荷分散2. IP負荷分散3. リンク層の負荷分散4. ハイブ...

vmware workstation12 インストール CentOS プロンプト VMware Player と Device/Credential Guard に互換性がない、理由と解決策

最新バージョンの WIN10 では、Microsoft は仮想化コンテナに基づくセキュリティ メカニ...

JavaScript 文字列の一般的なメソッドの詳細な説明

目次1. キャラクター文法パラメータ索引戻り値2. 連結文法パラメータ文字列2 [, …文字列N]戻...

CSS3で実装された読み込みアニメーション

成果を達成する実装コード <h1>123WORDPRESS.COM</h1>...

MySQLインデックスが失敗するいくつかの状況の詳細な分析

1. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など)コード値...

Vueは単純なランダムロールコールを実行します

目次レイアウト部分: <div id="アプリ"> <p>...

Dockerfile を使用して Docker イメージをカスタマイズする方法

Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

MySQL データベースで機密データの暗号化と復号化を実装する方法

目次1. 準備2. MySQL暗号化関数方式2.1 MySQL 暗号化2.2 MYSQL 復号化3....

React クラスコンポーネントのライフサイクルと実行順序

1. Reactコンポーネントを定義する2つの方法1. 関数コンポーネント。単純な関数コンポーネント...

JavaScriptを使って動的にテーブルを生成するケースの詳しい説明

目次序文実装のアイデア実装コード成果を達成する序文これは、テーブルを動的に追加する例です。[追加] ...