docker部署Redis

1.配置daemon.json文件

首先,在 /etc/docker/daemon.json中配置daemon.json,使得docker可以拉取国内镜像。配置后才可以用docker pull redis:7.4.1 命令拉取镜像。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://your_preferred_mirror",
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}

EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.配置redis.conf文件

# Redis configuration file example for remote access with password protection

# 绑定所有 IP 地址
bind 0.0.0.0

# 禁用保护模式 (允许从外部连接)
protected-mode no

# 设置密码,客户端必须提供此密码才能连接
requirepass 123321

# 默认端口
port 6379

# 如果你使用的是持久化(RDB 快照),可以保持默认设置
save 900 1
save 300 10
save 60 10000

# 默认日志设置
loglevel notice
logfile ""

# 默认数据库文件
dir /data

# 禁用事件通知
notify-keyspace-events ""

# 限制客户端连接数
maxclients 10000

# 如果客户端空闲一段时间未发送命令,自动断开连接
timeout 300

# Redis 持久化配置(RDB和AOF)
appendonly no

3.启动容器


启动的参数要填写redis.conf本机路径以及对于容器中映射的路径

启动命令:

```bash
docker run --name redis 
-d -p 6379:6379 
-v /opt/redis/redis.conf:/usr/local/etc/redis/redis.conf 
--restart=always 
--privileged=true 
redis:7.4.1 redis-server /usr/local/etc/redis/redis.conf

  • /opt/redis/redis.conf 是你本地的配置文件路径。
  • /usr/local/etc/redis/redis.conf 是容器内 Redis 的配置文件路径。
  • redis-server /usr/local/etc/redis/redis.conf 明确指定 Redis 启动时加载这个配置文件。

4.检查

4.1 检查日志错误或警告

首先,确认容器是否成功加载了配置文件,并没有出现错误或警告。请查看容器日志:
docker logs redis

如果你在日志中看到类似下面的消息,表示配置文件已经成功加载:

1:C 29 Nov 2024 09:01:17.625 * Redis version=7.4.1, bits=64, commit=00000000, modified=0, pid=1, just started
1:M 29 Nov 2024 09:01:17.625 * Running mode=standalone, port=6379.
1:M 29 Nov 2024 09:01:17.625 * Ready to accept connections tcp

同时,也要确认没有其他错误或警告,特别是关于 bindrequirepass 的部分。

4.2 确认配置文件是否正确

在 `redis.conf` 中,确认你有以下配置:
  • bind 0.0.0.0 — 确保 Redis 监听所有 IP 地址
  • requirepass 123321 — 确保设置了密码,防止未授权连接

4.3 检查是否能够在容器内部连接

通过 `docker exec` 进入到 Redis 容器内部,并尝试使用 `redis-cli` 工具连接 Redis,查看是否能够成功连接:
docker exec -it redis redis-cli

redis-cli 中,尝试以下命令:

auth 123321
ping

如果返回 PONG,表示 Redis 在容器内正常工作。

5. 使用外部客户端连接

如果容器内部正常工作,但你仍然无法从 Windows 客户端连接,可能是网络配置或防火墙问题。

5.2 检查 Docker 网络

5.2.1 检查端口是否监听

确保容器端口 `6379` 已经绑定到主机的 `6379` 端口上。

可以在本机上运行以下命令:

netstat -an | findstr 6379

确认 6379 端口是否处于监听状态。如果没有看到相关的监听记录,可能需要检查 Docker 的网络设置。

5.2.2 关闭linux中防火墙

5.2.3 Ubuntu(通常使用ufw管理防火墙)
+ 查看防火墙状态`sudo ufw status` - 如果显示 `Status: active`,表示防火墙已开启 - 如果显示 `Status: inactive`,表示防火墙已关闭 + 关闭防火墙 `sudo ufw disable` + 开启防火墙 `sudo ufw enable`
5.2.4 CentOS(通常使用firewalld管理防火墙)
+ 查看防火墙状态:`sudo systemctl status firewalld ` + 关闭防火墙:`sudo systemctl stop firewalld ` + 开启防火墙 :`sudo systemctl start firewalld` + 禁用防火墙开机启动:`sudo systemctl disable firewalld` + 启用防火墙开机启动:`sudo systemctl enable firewalld`

** 设置防火墙开机自启或禁用**

  • 禁用防火墙开机启动:sudo systemctl disable firewalld
  • 启用防火墙开机启动:sudo systemctl enable firewalld

5.3 检查 Windows 防火墙

即使已经在容器中配置了 `bind 0.0.0.0`,仍然可能有防火墙阻止访问。需要确保 Windows 防火墙没有阻止 6379 端口。可以在 Windows 防火墙中添加一条允许规则,允许通过 6379 端口的访问。

要允许 Windows 防火墙通过 6379 端口访问 Redis,可以按照以下步骤来配置防火墙规则:

5.3.1 打开 Windows 防火墙设置

** 按下 Win + R**,输入 `wf.msc`,然后按下 **Enter**,打开 **Windows 防火墙高级安全性** 窗口。

5.3.2 创建入站规则

1. 在左侧的菜单中,点击 **入站规则**。 2. 在右侧,点击 **新建规则**。 3. 在弹出的窗口中,选择 **端口**,然后点击 **下一步**。 4. 选择 **TCP**,并在 **特定本地端口** 框中输入 `6379`(Redis 的默认端口),然后点击 **下一步**。 5. 选择 **允许连接**,然后点击 **下一步**。 6. 保持默认设置,点击 **下一步**。 7. 给这条规则起一个名字(比如:`Allow Redis Port 6379`),然后点击 **完成**。

5.3.3 创建出站规则(如果需要)

通常情况下,入站规则就足够了。但如果希望确保出站流量也能够通过 6379 端口,可以创建一个出站规则。步骤和入站规则类似:
  1. Windows 防火墙高级安全性 窗口的左侧菜单中,点击 出站规则
  2. 然后重复上面的步骤,创建一个允许通过端口 6379 的出站规则。

5.3.4. 确认规则已生效

1. 在 **入站规则** 或 **出站规则** 中,确认刚才创建的规则是否已经列出。 2. 确保该规则的状态是 **已启用**。

6.测试连接

完成防火墙配置后,尝试从 Windows 机器使用 Redis 客户端工具(例如 **Redis Desktop Manager** 或 **redis-cli**)连接到虚拟机的 Redis 服务,使用虚拟机的 IP 地址和密码。

如果仍然无法连接,可以尝试重启 Redis 容器和 Windows 防火墙服务,确保配置生效。

防火墙规则设置后,要重启生效。

注意:连接失败,可尝试关闭vpn等代理工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值