首先從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 ,以及端口映射。
這樣就行了。
可是我在搭建的時候遇到了以下的問題:redis
1:S 30 Oct 2020 00:24:28.379 * MASTER <-> REPLICA sync started 1: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
,查看容器的信息;docker
"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),去修改配置。
這下就成功了。shell