Docker Redis 架設教學
Posted on Sep 14, 2022 in 用 Docker 架設服務 by Amo Chen ‐ 2 min read
Redis 幾乎是現今大型網路應用(Application)都會使用的 in-memory 資料庫(database),可應用在實作快取(cache), message broker 等功能,目前絕大多數都使用 Redis 作為快取後端(backend), 該服務也經常會與 memcached 相提並論,不過 Redis 支援的功能更加多元,例如 Redis 提供多種不同的 data types (set, lists, hashes 等)、支援 transaction 等用法,如果運用得當,不僅可以簡化程式邏輯,也能帶來系統效率提升。
本文記錄如何在本機(localhost)環境以 Docker 架設 Redis 以供開發使用。
本文環境
- macOS
- Docker Desktop 4.12.0
- jq 1.6
Redis Docker Image
以下指令使用 Docker 官方提供的將 Redis 最新編譯的 Docker image 在背景執行,並將本機(localhost)的 6379 通訊埠轉送至該 Redis 容器(container)的 6379 通訊埠:
$ docker run --name redis -p 6379:6379 -d redis:latest
如果執行成功可以從指令 docker ps -a
中看到 redis 正在執行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fbb1d03fbc4 redis:latest "docker-entrypoint.s…" 29 hours ago Up 25 hours 0.0.0.0:6379->6379/tcp redis
如果需要不同版本的 Redis Docker image 可以將以下指令中的 <tag>
替換成想要 pull 的 Redis Docker image 版本:
$ docker pull redis:<tag>
例如以下指令 pull 6.2.7-alpine
版本的 Redis:
$ docker pull redis:6.2.7-alpine
完整的 tag 列表可以至此頁面查詢 supported tags
.
更改 Redis 設定 redis.conf
如果想更改 Redis 的設定,例如 7.0 的設定 可使用 -v
參數,以掛載 Volume 的方式將 redis.conf 覆寫(override) 。
例如以下指令建立 1 個資料夾並且設定好 redis.conf
之後,以 -v
參數掛載至 Redis 容器 /usr/local/etc/redis
,以覆寫其設定檔:
$ mkdir -p ./myredis/conf/
$ vim ./myredis/conf/redis.conf # edit your redis conf here
$ docker run -p 6379:6379 -v ./myredis/conf:/usr/local/etc/redis --name myredis redis:latest redis-server /usr/local/etc/redis/redis.conf
redis-cli
如果想用 Redis Docker image 內提供的 redis-cli
指令連線進 Redis Docker 容器的話,可以先使用以下指令找到該容器的 IP address:
$ docker inspect redis | jq '.[]|.NetworkSettings.Networks'
執行成功的話,能夠看到類似以下的輸出結果,其中 IPAddress
就是我們需要的 IP address 值:
{
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "88f8baf9c5435156a8a5fa3264438dd0c74cb72a2485d938d83b7c068e684359",
"EndpointID": "8bc6f571154a58aa3efbf468ec374738e5742cffb1c9e6795dc55d1072d610a1",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
接著,將上述步驟取得的 IP address 代入以下指令:
$ docker run -it --rm redis redis-cli -h <IP address>
例如:
$ docker run -it --rm redis redis-cli -h 172.17.0.3
連線成功的話,將會出現類似以下的畫面,可以輸入 Redis 指令 ping
測試:
172.17.0.3:6379> ping
PONG
172.17.0.3:6379>
接下來就可以大玩特玩 Redis 囉!
References
https://hub.docker.com/_/redis
https://redis.io/