1、拉取镜像,redis的docker hub地址。可以在这里要的版本
https://hub.docker.com/_/redis
我这里使用的是redis:6.0 版本
docker pull redis:6.0
2、创建一个配置文件,放入镜像中
配置文件可以从https://redis.io/topics/config 官方下载,这里对以下配置进行了调整
#bind 127.0.0.1 //注释绑定hostname 否则只有本机能访问
protected-mode no //是否启动保护模式,修改为no
port 6379 //端口号 默认6379,不建议修改,我们可以通过docker设置另外的端口映射到6379
daemonize no //是否守护进程,我们使用docker + 参数(-d)启动。这里可以为no
appendonly yes
3、创建一个Dockerfile , 创建一个镜像,把配置文件打进镜像中
touch Dockerfile
vi Dockerfile
FROM redis:6.0
COPY redis.conf /usr/local/bin/redis.conf //这里已经把刚刚修改的redis.conf在与Dockerfile同目录了
docker build -t redis_test:v1 . //build镜像
4、启动redis
docker run -d --name redis_test -p 6000:6379 -v $PWD/redis.conf:/usr/local/bin/redis.conf -v $PWD/data:/data my_redis:v5 redis-server /usr/local/bin/redis.conf
649ee2ee8e13cefc0cdb3c7553fdeadd14ed9029bdf4c3a89fed3dc0b601efcf
我们刚刚已经把redis.conf打进了/usr/local/bin/redis.conf 。 如果有需要,这里可以挂再本地redis.conf 。 见-v命令
-v $PWD/data:/data 挂在数据持久化目录到本机
查看启动容器
[root@localhost 6000]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
649ee2ee8e13 my_redis:v5 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:6000->6379/tcp redis_test
5、进入容器进行测试
docker exec -it 649ee2ee8e13 /bin/bash
root@649ee2ee8e13:/data# redis-cli
127.0.0.1:6379> set a 'test'
OK
然后用另外的redis客户端连接当前redis数据库。我这里使用了redis 5.0版本的客户端
[root@localhost src]# ./redis-cli -h localhost -p 6000 // docker启动已经映射端口到6000
localhost:6000> get a
"test" //正常拿到docker部署的redis数据