12.3 Redis
Redis是一个开源(BSD许可)的基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。

Redis使用ANSI C实现,2013年起由Pivotal公司资助。Redis的全称意为REmote DIctionary Server。
通过docker run指令可以直接启动一个redis-container容器:
- $ docker run --name redis-container -d redis
- 6f7d16f298e9c505f35ae28b61b4015877a5b0b75c60797fa4583429e4a14e24
之后可以通过docker ps指令查看正在运行的redis-container容器的容器ID:
- $ docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
- NAMES
- 6f7d16f298e9 redis "docker-entrypoint.sh" 32 seconds ago Up 31 seconds 6379/tcp
- redis-container
在此redis容器启动bash,并查看容器的运行时间和内存状况:
- $ docker exec -it 6f7d16f298e9 bash
- root@6f7d16f298e9:/data# uptime
- 12:26:19 up 20 min, 0 users, load average: 0.00, 0.04, 0.10
- root@6f7d16f298e9:/data# free
- total used free shared buffers cached
- Mem: 1020096 699280 320816 126800 50184 527260
- -/+ buffers/cache: 121836 898260
- Swap: 1181112 0 1181112
同样可以通过env指令查看环境变量的配置:
- root@6f7d16f298e9:/data# env
- HOSTNAME=6f7d16f298e9
- REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.7.tar.gz
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- PWD=/data
- SHLVL=1
- HOME=/root
- REDIS_DOWNLOAD_SHA1=e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c
- REDIS_VERSION=3.0.7
- GOSU_VERSION=1.7
- _=/usr/bin/env
也可以通过ps指令查看当前容器运行的进程信息:
- root@6f7d16f298e9:/data# ps -ef
- UID PID PPID C STIME TTY TIME CMD
- redis 1 0 0 12:16 ? 00:00:02 redis-server *:6379
- root 30 0 0 12:51 ? 00:00:00 sh
- root 39 30 0 12:52 ? 00:00:00 ps -ef
1.连接redis容器
用户可以使用—link参数,连接创建的redis-container容器:
- $ docker run -it --link redis-container:db alpine sh
- / # ls
进入alpine系统容器后,可以使用ping指令测试redis容器:
- / # ping db
- PING db (172.17.0.2): 56 data bytes
- 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.088 ms
- 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.103 ms
- --- db ping statistics ---
- 2 packets transmitted, 2 packets received, 0% packet loss
- round-trip min/avg/max = 0.088/0.095/0.103 ms
还可以使用nc指令(即NetCat)检测redis服务的可用性:
- / # nc db 6379
- PING
- +PONG
官方镜像内也自带了redis客户端,可以使用以下指令直接使用:
- $ docker run -it --link redis-container:db --entrypoint redis-cli redis -h db
- db:6379> ping
- PONG
- db:6379> set 1 2
- OK
- db:6379> get 1
- "2"
2.使用自定义配置
可以通过数据卷实现自定义redis配置,如下所示:
- $ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name
- myredis redis redis-server /usr/local/etc/redis/redis.conf
