DockerFile制作自己的Redis鏡像


hub.docker.com 搜索到的 Redis官方鏡像,提示我們可以創建自己的 DockerFile 來添加 redis.conf 文件:

於是,我准備進行首次 DockerFile 的制作嘗試。

一、准備工作

1.1 下載 redis.conf

我的方案是從 GitHub 上下載 redis.conf。我選擇了 5.0.14 版本,各位可以選擇自己需要的版本。

1.2 修改配置

1.2.1 注釋掉bind 127.0.0.1

# bind 127.0.0.1

關於 bind 127.0.0.1Redis的bind的誤區 講得挺好的:

  1. bind <ip> 是綁定本機的IP地址,(准確的是:本機的網卡對應的IP地址,每一個網卡都有一個IP地址)
  2. 127.0.0.1 是一個回環地址(Local Loopback),也就是只有本地才能訪問到這個回環地址,而其他的計算機也只能訪問他們自己的回環地址。

如果配置 bind 127.0.0.1,那就只有本機可以訪問,而其他計算機不能訪問。因此,我們在 redis.conf 中注釋掉這一行

1.2.2 修改daemonize no

daemonize no

daemonize 表示是否以守護進程運行,在構建 Docker 鏡像中如果設置為 daemonize yes,會導致啟動后立即自動關閉,用 docker ps 命令查詢不到進程,
且用 docker logs 容器id/容器名稱 查詢日志時,也沒有報錯,而是以下內容:

1:C 17 Jan 2022 11:29:12.523 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 17 Jan 2022 11:29:12.524 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 17 Jan 2022 11:29:12.524 # Configuration loaded

1.2.3 增加密碼驗證

打開 requirepass 和 masterauth 的注釋:

requirepass abc123
masterauth abc123

開啟 requirepass 要求客戶端在處理任何其他命令之前發出 AUTH
開啟 masterauth ,如果主機受密碼保護(開啟了 requirepass 配置指令),則可以在啟動復制同步過程之前通知復制副本進行身份驗證,否則主機將拒絕復制副本請求。

二、構建Dockerfile

2.1 文件結構

geekziyu-redis
├── Dockerfile
└── redis.conf

geekziyu-redis 是我 Windows 電腦的文件夾: D:\DockerContainer\geekziyu-redis

2.2 Dockerfile

注意,文件名為 DockerfileD 要大寫,f 要小寫,且不帶文件后綴。

FROM redis:5.0.14
MAINTAINER geekziyu@163.com
COPY redis.conf /usr/local/etc/redis/redis.conf
EXPOSE 6379
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

DockerFile Reference

2.3 build

docker build -t geekziyu/redis:latest .

注意末尾這個 . ,省略它會報錯。

之后,用

docker images

檢查鏡像,發現多出 geekziyu/redis

2.4 run

運行鏡像,啟動進程:

docker run -it --name ziyuredis -p 6379:6379 -d geekziyu/redis:latest

如果不加上 -p 6379:6379 ,那么宿主機是訪問不了的。

三、驗證

打開 Bash :

docker exec -it ziyuredis /bin/bash

接着運行 redis-cli,並驗證密碼:

root@ae284054ebc8:/# redis-cli
127.0.0.1:6379> auth abc123

至此,我們就使用 Dockerfile 簡單的構建了一個Redis鏡像並用此鏡像運行了一個進程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM