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

推薦する

Vue3は現在のルーティングアドレスを取得します

正解useRouterの使用: // ルーターパス: "/user/:uid" ...

Linuxでスクリーンショットを撮って編集するための最高のツール

メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...

VPSサーバーでよく使われるパフォーマンステストスクリプトの概要

これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...

良い広告にはどのような特徴が必要ですか?

広告業は人間であることに似ていると言う人がいます。これは本当です。優れた広告には、優れた人間と同じよ...

入力[type=file]の起動が遅くて動かなくなる問題を素早く解決します

入力タグタイプがファイルで、タグ内にaccpet="image/*"属性が設定さ...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

レスポンシブ Web デザイン手法を実装し、ウォーターフォール モデルに別れを告げる 5 つのステップ (グラフィック チュートリアル)

次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

CentOS6 アップグレード glibc 操作手順

目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...

H5 WeChatパブリックアカウント認証を実装するための簡単な手順

序文昨日、h5 WeChat認証の実装が必要なプロジェクトがありました。したがって、この機能を完了す...

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属...

Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

目次1. MacへのDockerのインストール2. Win 10 システムでの Docker のイン...

JavaScript の基礎: スコープ

目次範囲グローバルスコープ関数のスコープもし、スイッチ、のために、その間ブロックスコープスコープチェ...

Dockerディスク容量不足の問題を解決する

Docker が配置されているサーバーをしばらく稼働させたところ、サーバーのディスク ディレクトリの...

MySQL 8の新機能におけるグローバルパラメータの永続性の詳細な説明

目次序文グローバルパラメータの永続性最後に要約する参考資料:序文2018 年に MySQL 8.0....