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
同时,也要确认没有其他错误或警告,特别是关于 bind 和 requirepass 的部分。
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 端口,可以创建一个出站规则。步骤和入站规则类似:- 在 Windows 防火墙高级安全性 窗口的左侧菜单中,点击 出站规则。
- 然后重复上面的步骤,创建一个允许通过端口 6379 的出站规则。
5.3.4. 确认规则已生效
1. 在 **入站规则** 或 **出站规则** 中,确认刚才创建的规则是否已经列出。 2. 确保该规则的状态是 **已启用**。6.测试连接
完成防火墙配置后,尝试从 Windows 机器使用 Redis 客户端工具(例如 **Redis Desktop Manager** 或 **redis-cli**)连接到虚拟机的 Redis 服务,使用虚拟机的 IP 地址和密码。如果仍然无法连接,可以尝试重启 Redis 容器和 Windows 防火墙服务,确保配置生效。
防火墙规则设置后,要重启生效。
注意:连接失败,可尝试关闭vpn等代理工具。
575

被折叠的 条评论
为什么被折叠?



