安装docker:
[root@bogon ~]# yum -y install docker
配置docker镜像加速:
加速上传daemon.json到/date/docker目录下即可
[root@bogon docker]# rz
[root@bogon docker]# ls
certs.d daemon.json seccomp.json
[root@bogon docker]# cat daemon.json
{
"registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}
[root@bogon docker]#
关闭防火墙和selinux
[root@bogon docker]# systemctl stop firewalld.service
[root@bogon docker]# setenforce 0
[root@bogon docker]#
启动docker:
[root@bogon docker]# systemctl start docker
[root@bogon docker]# systemctl daemon-reload
[root@bogon docker]#
搜索redis镜像并拉取:
搜索镜像:
[root@bogon ~]# docker search redis
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/redis Redis is an open source key-value store th... 8248 [OK]
docker.io docker.io/bitnami/redis Bitnami Redis Docker Image 147 [OK]
docker.io docker.io/sameersbn/redis 80 [OK]
docker.io docker.io/grokzen/redis-cluster Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0 68
docker.io docker.io/rediscommander/redis-commander Alpine image for redis-commander - Redis m... 40 [OK]
docker.io docker.io/kubeguide/redis-master redis-master with "Hello World!" 31
docker.io docker.io/redislabs/redis Clustered in-memory database engine compat... 25
docker.io docker.io/redislabs/redisearch Redis With the RedisSearch module pre-load... 23
docker.io docker.io/arm32v7/redis Redis is an open source key-value store th... 21
docker.io docker.io/oliver006/redis_exporter Prometheus Exporter for Redis Metrics. Su... 21
docker.io docker.io/bitnami/redis-sentinel Bitnami Docker Image for Redis Sentinel 14 [OK]
docker.io docker.io/webhippie/redis Docker images for Redis 12 [OK]
docker.io docker.io/redislabs/redisgraph A graph database module for Redis 11 [OK]
docker.io docker.io/s7anley/redis-sentinel-docker Redis Sentinel 10 [OK]
docker.io docker.io/arm64v8/redis Redis is an open source key-value store th... 9
docker.io docker.io/insready/redis-stat Docker image for the real-time Redis monit... 9 [OK]
docker.io docker.io/redislabs/redisinsight RedisInsight - The GUI for Redis 7
docker.io docker.io/redislabs/redismod An automated build of redismod - latest Re... 7 [OK]
docker.io docker.io/centos/redis-32-centos7 Redis in-memory data structure store, used... 5
docker.io docker.io/goodsmileduck/redis-cli redis-cli on alpine 5 [OK]
docker.io docker.io/circleci/redis CircleCI images for Redis 4 [OK]
docker.io docker.io/clearlinux/redis Redis key-value data structure server with... 2
docker.io docker.io/tiredofit/redis Redis Server w/ Zabbix monitoring and S6 O... 1 [OK]
docker.io docker.io/wodby/redis Redis container image with orchestration 1 [OK]
docker.io docker.io/xetamus/redis-resource forked redis-resource 0 [OK]
[root@bogon ~]#
拉取镜像:
[root@bogon ~]# docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ...
latest: Pulling from docker.io/library/redis
afb6ec6fdc1c: Pull complete
608641ee4c3f: Pull complete
668ab9e1f4bc: Pull complete
78a12698914e: Pull complete
d056855f4300: Pull complete
618fdf7d0dec: Pull complete
Digest: sha256:ec277acf143340fa338f0b1a9b2f23632335d2096940d8e754474e21476eae32
Status: Downloaded newer image for docker.io/redis:latest
[root@bogon ~]# echo $?
0
[root@bogon ~]#
查看系统当前镜像:
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest 36304d3b4540 10 days ago 104 MB
[root@bogon ~]#
运行redis-server容器并做持久化配置:
[root@bogon ~]# docker run --name redis_master -d -p 6379:6379 -v /opt/redis_master:/data redis
34352af51a36ff5cfc3f1bb3ba53194884855496c6557b265eaf938d058f992e
[root@bogon ~]# docker run --name redis_slave1 -d -p 6380:6379 -v /opt/redis_slave1:/data redis
9d02ac088c576a3089b782f85fab7a357080fb61368b765d461a1a3063166704
[root@bogon ~]# docker run --name redis_slave2 -d -p 6381:6379 -v /opt/redis_slave2:/data redis
0384ed4db127b5219a9ca0bad39cf878f39a2148663cab1be190c0db33295455
[root@bogon ~]#
docker启动3个redis容器服务,使用6379-6381这3个端口:
[root@bogon ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0384ed4db127 redis "docker-entrypoint..." 43 seconds ago Up 42 seconds 0.0.0.0:6381->6379/tcp redis_slave2
9d02ac088c57 redis "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:6380->6379/tcp redis_slave1
34352af51a36 redis "docker-entrypoint..." 3 minutes ago Up 3 minutes 0.0.0.0:6379->6379/tcp redis_master
[root@bogon ~]#
进入docker容器内部查看当前redis角色:
[root@bogon ~]# docker exec -it redis_master redis-cli
127.0.0.1:6379> role
1) "master"
2) (integer) 0
3) (empty array)
127.0.0.1:6379>
配置redis集群,一主两从
我们将redis_master配置为主,redis_slave1和redis_slave2配置为从
登录redis_slave1,配置同步:
[root@bogon ~]# docker exec -it redis_slave1 redis-cli
127.0.0.1:6379> slaveof 192.168.136.178 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "192.168.136.178"
3) (integer) 6379
4) "connected"
5) (integer) 14
127.0.0.1:6379>
登录redis_slave2做相同操作,执行同步redis_master操作:
[root@bogon ~]# docker exec -it redis_slave2 redis-cli
127.0.0.1:6379> slaveof 192.168.136.178 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "192.168.136.178"
3) (integer) 6379
4) "connected"
5) (integer) 196
127.0.0.1:6379>
测试是否成功
在redis_master上创建一个键值对:
[root@bogon ~]# docker exec -it redis_master redis-cli
127.0.0.1:6379> set name 520
OK
127.0.0.1:6379> get name
"520"
127.0.0.1:6379>
来redis_slave1和redis_slave2上查看是否同步成功:
[root@bogon ~]# docker exec -it redis_slave1 redis-cli
127.0.0.1:6379> get name
"520"
127.0.0.1:6379>
[root@bogon ~]# docker exec -it redis_slave2 redis-cli
127.0.0.1:6379> get name
"520"
127.0.0.1:6379>
数据同步成功!搭建完毕