Redis インストール(コンテナ編)

スポンサーリンク

Dockerを用いたRedis Serverの起動方法を説明します。

前提

公式ドキュメント

参考になる公式ドキュメントを以下に示します。

動作確認済環境

  • Rocky Linux 8.6
  • Docker CE 20.10.21
  • Redis 7.0.5

DockerによるRedis Serverの起動

最小設定

以下のようなコマンドでコンテナ版のRedis Serverを起動できます。タグの「redis:latest」の部分はお好みのバージョンに合わせて適宜の変更をお願いします。

docker run -d \
  --name redis01 \
  -p 6379:6379 \
  redis:latest

それでは起動したコンテナに接続できるかどうかを試してみましょう。疎通確認用途として、redis-cliをインストールします。

dnf install redis

redis-cliコマンドでコンテナへ接続可能な事を確認します。

[root@docker011 ~]# redis-cli 
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
[root@docker011 ~]# 

次の動作確認シナリオに備え、コンテナを削除します。

docker container rm -f redis01

永続化

containerのRedisのデータは/dataに書き込まれます。これをホスト側にexportすれば永続化が可能です。また、コマンドライン引数で--saveを指定すれば、一定間隔で保存されます。

「save 60 1」は60秒間で1回以上の書き込みがあった場合に、dump.rdbというファイルに書き込む設定です。詳細は「Redis 永続化」を参照ください。

mkdir -p /redis/data/
chmod 777 /redis/data

docker run -d \
  --name redis02 \
  -p 6379:6379 \
  -v /redis/data:/data \
  redis:latest \
  redis-server --save 60 1

何らかのデータを書き込みます。

[root@docker011 ~]# redis-cli 
127.0.0.1:6379> SET key01 value01
OK
127.0.0.1:6379> exit
[root@docker011 ~]# 

書き込みの1分後、dump.rdbというファイルが作成されます。

[root@docker011 ~]# ls -l /redis/data/
合計 4
-rw------- 1 systemd-coredump input 108 11月 24 23:00 dump.rdb
[root@docker011 ~]# 

次の動作確認シナリオに備え、コンテナを削除します。

docker container rm -f redis02

設定ファイルの読み込み

前述の設定はコマンドラインでsaveなどのパラメタを与えていましたが、configファイルでパラメタを定義する事もできます。以下に設定例を示します。

mkdir -p /redis/etc/
cat << EOF > /redis/etc/redis.conf
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync always
EOF

docker run -d \
  --name redis03 \
  -p 6379:6379 \
  -v /redis/etc:/usr/local/etc/redis \
  redis:latest \
  redis-server /usr/local/etc/redis/redis.conf

redis-cliで接続し、確かにredis.confに記述した設定が反映されている事を確認します。

[root@docker011 ~]# redis-cli 
127.0.0.1:6379> CONFIG GET save
1) "save"
2) "900 1 300 10 60 10000"
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> CONFIG GET appendfsync
1) "appendfsync"
2) "always"
127.0.0.1:6379> exit
[root@docker011 ~]# 
タイトルとURLをコピーしました