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 つの例

推薦する

Nacos で MySQL8 を設定する方法

1. MySQLデータベースnacos_configを作成する2. データベース nacos_con...

mysql.data.dll ドライバーのさまざまなバージョンの簡単な分析

ここにmysqlドライバmysql.data.dllがあります知らせ:ここではX86バージョンが多く...

JS は Web ページナビゲーションバーの特殊効果を実現します

この記事では、ネイティブ JS を使用して実装された実用的な Web ナビゲーション バー効果を紹介...

Linux リモート管理と sshd サービス検証の知識ポイントの詳細な説明

1. SSHリモート管理SSH の定義SSH (Secure Shell) は、主にキャラクタ イン...

js QRコードスキャンログインの原理についての簡単な説明

目次QRコードログインの真髄QRコードを理解するシステム認証メカニズムQRコードをスキャンしてログイ...

MySQL の組み込み関数 find_in_set を使用した効率的なあいまい検索の詳細な説明

一般的に使用される方法は次の 4 つです。 1.locate()メソッドを使用する一般的な使用法: ...

Angularコンポーネント投影の詳細な説明

目次概要1. 簡単な例1.サブコンポーネントの<ng-content>ディレクティブを使...

JavaScript プロトタイプチェーンを理解するための 2 つの図

目次1. プロトタイプの関係2. プロトタイプチェーン3. 結論序文:前回の記事では、JavaScr...

JSはタイムラインの自動再生を実現する

最近、次のような効果を実装しました。再生ボタンをクリックするとタイムラインの再生が開始され、一時停止...

Docker がデータベースのデプロイに適さない 7 つの理由のまとめ

Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソフト...

nginxリバースプロキシのマルチポートマッピングの実装

コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト

ウェブ上でチャートを描くための 9 つの優れた JavaScript フレームワーク スクリプト 1...

uniappは録音アップロード機能を実現

目次uni-app の紹介HTML部分js部分インスタンスを作成する録音を開始録音終了録音を再生再生...

CSS スティッキーフッター実装コード

この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...

Zookeeperスタンドアロン環境とクラスタ環境の構築

1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...