1.拉取redis 镜像
docker pull redis:7.2.4
2. 准备环境
2.1 在宿主机创建目录
mkdir -p /app/redis
2.2 将一个redis.conf文件模版拷贝到 /app/redis目录下
cp /myredis/redis.conf /app/redis
2.3 修改redis.conf文件
- 将 bind 127.0.0.1 -::1 改成 #bind 127.0.0.1 -::1
- 将 daemonize no 改成 daemonize no (因为该配置和docker run 中 -d 参数会冲突,会导致容器一直启动失败)
3. 使用容器卷命令run 容器(注:启动时使用了自己配置的redis.conf)
docker run -p 6379:6379 --name=myr1 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:7.2.4 redis-server /etc/redis/redis.conf
[root@192 redis]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8af29345875c redis:7.2.4 "docker-entrypoint.s..." 5 seconds ago Up 4 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp myr1
4. 证明是否使用了自己配置的redis.conf
4.1 第一次在容器中启动redis(可以选中15号库)
[root@192 redis]# docker exec -it myr1 /bin/bash
root@8af29345875c:/data# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379>
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]>
4.2 修改/app/redis/redis.conf 配置文件
databases 16 改成 databases 10
4.3 重启容器
docker restart myr1
4.4 第二次在容器中启动redis(不可以选中15号库)
(error) ERR DB index is out of range
[root@192 redis]# docker exec -it myr1 /bin/bash
root@8af29345875c:/data# redis-cli
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> SELECT 15
(error) ERR DB index is out of range
127.0.0.1:6379> SELECT 9
OK
127.0.0.1:6379[9]>
结论: 此次实验,证明redis 使用了我们自己的配置文件。