首先从dockerhub上搜寻redis
而后行将docker pull到本地 docker pull redis
,待同步完镜像后。
咱们须要对容器进行端口映射,以及文件映射,让redis读取本地的redis.conf文件。redis.conf问价能够去redis官网下载一份redis,而后提取。咱们 批改好redis.conf文件,并放到咱们映射的门路下,待容器启动就会加载。master节点批改bind,这个参数是用来绑定能够拜访该redis的ip地址。
slave节点也是批改这个,而后还要批改replicaof masterip port 参数,masterip 就是master节点的IP,port是他的端口。
而后就是运行docker镜像啦。docker run -v ~/workspace/redis/master/config/redis.conf:/usr/local/etc/redis/redis.conf -v ~/workspace/redis/master:/data -p 6379:6379 --name master redis redis-server /usr/local/etc/redis/redis.conf
参数 -v是将后面的宿主机的地址映射到容器中的门路。 -p 是将主机端口映射到容器端口。
而后咱们批改容器映射到主机的端口。也就是-p。--name 是容器的名字。
咱们启动容器。
这是咱们的master节点。同样的,咱们批改启动容器的命令,启动另外两个redis节点。批改配置文件redis.conf 和 --name ,以及端口映射。
这样就好了。
然而我在搭建的时候遇到了如下的问题:
1:S 30 Oct 2020 00:24:28.379 * MASTER <-> REPLICA sync started1:S 30 Oct 2020 00:24:28.380 * Non blocking connect for SYNC fired the event.1:S 30 Oct 2020 00:24:28.380 * Master replied to PING, replication can continue...1:S 30 Oct 2020 00:24:28.380 * Partial resynchronization not possible (no cached master)1:S 30 Oct 2020 00:24:28.380 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master
输出docker inspect master
,查看容器的信息;
"Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "d146143ce326a6d873f44293e255e1b77453747373ce9a11af450e74757bcce4", "EndpointID": "46962fab58f136d8005a4c1e0773e24e0a2618a887f3248da4815a8f4722238e", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } }
能够看到master的ip地址为172.17.0.2,我之前相当然的是本机地址(localhost),去批改配置。
这下就胜利了。