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 以供開發使用。

本文環境

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/

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!