[Docker系列·10] 搭建Redis服务器

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: ![2014_08_27_redis_master_slave](http://img2.tbcdn.cn/L1/461/1/519d6d0663bda5dbd512829b3da221f1e0872743) ### 1 Docker-Ubuntu-Redis >工作目录:/home/erichan/docker-room/ubuntu-redis #### 1.1 制作镜像 ``

2014_08_27_redis_master_slave

1 Docker-Ubuntu-Redis

工作目录:/home/erichan/docker-room/ubuntu-redis

1.1 制作镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-redis$ nano Dockerfile
# Version: 0.0.1
FROM feuyeux/ubuntu-base
MAINTAINER Eric Han "feuyeux@gmail.com"
RUN apt-get update && apt-get install -y wget gcc make g++ build-essential libc6-dev tcl git supervisor
RUN cd /tmp && wget -q http://download.redis.io/redis-stable.tar.gz
RUN tar -xzf /tmp/redis-stable.tar.gz -C /opt
RUN cd /opt/redis-stable && make && make install
RUN cp -f /opt/redis-stable/src/redis-sentinel /usr/local/bin
RUN mkdir -p /etc/redis && cp -f /opt/redis-stable/*.conf /etc/redis
RUN rm -rf /tmp/redis-stable*
RUN sed -i 's/^\(bind .*\)$/# \1/' /etc/redis/redis.conf && \
  sed -i 's/^\(daemonize .*\)$/# \1/' /etc/redis/redis.conf && \
  sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/redis/redis.conf && \
  sed -i 's/^\(logfile .*\)$/# \1/' /etc/redis/redis.conf
VOLUME ["/data"]
WORKDIR /data
CMD ["redis-server", "/etc/redis/redis.conf"]
EXPOSE 6379

1.2 创建镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-redis$ d build -t feuyeux/redis .

1.3 测试镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-redis$ d run -d --name redis -p 6379:6379 feuyeux/redis
redis-cli
d run -ti --rm --link redis:redis feuyeux/redis bash -c 'redis-cli -h $REDIS_PORT_6379_TCP_ADDR'

--rm=false: Automatically remove the container when it exits (incompatible with -d)

2 Master-Slave Cluster

工作目录:/home/erichan/docker-room/ubuntu-redis/slave

2.1 制作镜像

# Version: 0.0.1
FROM feuyeux/redis
MAINTAINER Eric Han "feuyeux@gmail.com"
VOLUME ["/data"]
#RUN sysctl vm.overcommit_memory=1
ADD slave.sh /opt/redis-slave.sh
RUN chmod a+x /opt/redis-slave.sh
RUN sed 's/port 6379/port 6380/' /etc/redis/redis.conf
ENTRYPOINT ["/opt/redis-slave.sh", "--dir", "/data"]
EXPOSE 6380

mac: sed -ig 's/port 6379/port 6380/' redis.conf

start-slave.sh
#!/bin/bash
echo "master = $REDIS_MASTER_PORT_6379_TCP_ADDR"
if [ -z "$REDIS_MASTER_PORT_6379_TCP_ADDR" ]; then
    echo "REDIS_MASTER_PORT_6379_TCP_ADDR not defined. Did you run with -link?";
    exit 7;
fi
exec redis-server --slaveof $REDIS_MASTER_PORT_6379_TCP_ADDR $REDIS_MASTER_PORT_6379_TCP_PORT $*

2.2 创建镜像

erichan@ubuntu14_04_1-pd:~/docker-room/ubuntu-redis/slave$ d build -t feuyeux/redis-slave .

2.3 测试镜像

启动主
Master:
d run -d --name=feuyeux_redis_master -p 6379:6379 feuyeux/redis
检测主
d run -ti --rm --name redis-cli --link feuyeux_redis_master:redis_master feuyeux/redis /bin/bash
root@4096c03f37bc:/data# env
HOSTNAME=4096c03f37bc
TERM=xterm
REDIS_MASTER_PORT_22_TCP_PROTO=tcp
REDIS_MASTER_NAME=/redis-cli/redis_master
REDIS_MASTER_PORT_6379_TCP_ADDR=172.17.0.2
REDIS_MASTER_PORT_22_TCP=tcp://172.17.0.2:22
REDIS_MASTER_PORT_6379_TCP=tcp://172.17.0.2:6379
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/data
REDIS_MASTER_PORT_22_TCP_PORT=22
SHLVL=1
HOME=/
REDIS_MASTER_PORT_22_TCP_ADDR=172.17.0.2
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT=tcp://172.17.0.2:22
_=/usr/bin/env
root@4096c03f37bc:/data# 
启动辅
Slave:
d run -d --name=feuyeux_redis_slave -p 6379:6380 --link=feuyeux_redis_master:redis_master feuyeux/redis-slave

调试

d kill $(d ps -a) && d rm $(d ps -a -q)

d build -t feuyeux/redis-slave . && 
d run -d --name feuyeux_redis_master -p 6379:6379 feuyeux/redis && d run -d --name=feuyeux_redis_slave -p 6380:6380 --link=feuyeux_redis_master:redis_master feuyeux/redis-slave && d logs feuyeux_redis_slave

d start feuyeux_redis_slave
d start feuyeux_redis_master
redis-cli
进入主/辅
Cli-Master:
PID=$(d inspect --format {{.State.Pid}} feuyeux_redis_master) && sudo nsenter --target $PID --mount --uts --ipc --net --pid

Cli-Slave:
PID=$(d inspect --format {{.State.Pid}} feuyeux_redis_slave) && sudo nsenter --target $PID --mount --uts --ipc --net --pid

On Master

root@5f1efcd13f97:/# redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set lastName Han
OK
127.0.0.1:6379> set firstName Eric
OK
127.0.0.1:6379> set middleName Lu
OK
127.0.0.1:6379> keys *
1) "middleName"
2) "lastName"
3) "firstName"

On Slave

root@41d478df16f1:/# redis-cli -p 6380
127.0.0.1:6380> keys *
(empty list or set)
127.0.0.1:6380> keys *
1) "firstName"
2) "lastName"
3) "middleName"

On Host-Host(Mac OS)

[erichan@Eric-Mavericks ~]$ nc 192.168.1.12 6380
get lastName
$3
Han
quit
+OK
[erichan@Eric-Mavericks ~]$ 

192.168.1.12 is Docker Host(Ubuntu) IP

(完)

参考

目录
相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
261 0
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
623 7
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
332 5
|
4月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署dufs文件服务器
【Docker项目实战】使用Docker部署dufs文件服务器
696 17
【Docker项目实战】使用Docker部署dufs文件服务器
|
3月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
4月前
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
554 9
|
4月前
|
弹性计算 关系型数据库 Nacos
低配阿里云 ECS 如何 docker 环境部署 NACOS : 单机版模式
NACOS 单机版 Docker 安装指南。使用指定端口和 custom.env 配置文件启动 Nacos 服务,适用于 2.X 版本,包含 gRPC 支持及 MySQL 数据源配置。 -e MODE=standalone \
405 5
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?

热门文章

最新文章

下一篇
oss云网关配置