Docker启动两个Redis镜像并配置一主一从
使用 docker inspect 命令
docker inspect 可以查看容器的详细信息,包括 IP 地址。
#格式化输出关键信息(示例:查看端口映射)
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 容器名或容器ID
#查看环境变量
docker inspect --format='{{json .Config.Env}}' 容器名或容器ID
#查看单个容器的 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名或容器ID# 查看多个容器的 IP(分别执行)
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器1
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器2
Docker 启动两个 Redis 镜像并配置一主一从
步骤一:拉取 Redis 镜像
打开终端,执行以下命令拉取 Redis 镜像(以官方镜像为例):
docker pull redis
如果要指定版本,例如 7.4.5 版本,命令如下:
docker pull redis:7.4.5
步骤二:创建 Docker 网络(可选,但推荐)
为了方便容器之间的通信,创建一个自定义的 Docker 网络,执行以下命令:
docker network create redis-network
步骤三:启动主 Redis 容器
执行以下命令启动主 Redis 容器,这里将容器的 6379 端口映射到宿主机的 6379 端口,并将容器加入到前面创建的自定义网络中:
docker run -d --name redis-master \--network redis-network \-p 6379:6379 \redis
步骤四:启动从 Redis 容器并配置主从关系
执行以下命令启动从 Redis 容器,将容器的 6380 端口映射到宿主机的 6380 端口,同时通过 redis-cli --cluster 命令或者在配置文件中配置主从关系。
通过修改配置文件配置,先进入从 Redis 容器:
docker run -d --name redis-slave \--network my-redis-network \-p 6380:6379 \redis
# 进入从 Redis 容器
docker exec -it redis-slave bash
编辑 Redis 配置文件(通常是 /etc/redis/redis.conf或者/usr/local/etc/redis/redis.conf ),添加或修改以下内容来指定主 Redis 的地址和端口:
slaveof <master_ip> <master_port>
例如,假设主 Redis 在 Docker 网络内的 IP 是 172.18.0.2(可通过 docker inspect 获取),端口 6379
slaveof 172.18.0.2 6379
保存配置文件后,重启从 Redis 容器:
docker restart redis-slave
步骤五:验证主从配置
主 Redis 写入数据验证:
docker exec -it redis-master bash
使用 redis-cli 写入数据,例如:
redis-cli
set key1 value1
从 Redis 读取数据验证:
进入从 Redis 容器:
docker exec -it redis-slave bash
使用 redis-cli 读取数据:
redis-cli
get key1
如果能读取到主 Redis 写入的 value1 ,则说明主从配置成功。