1. 问题重现
创建容器
2. 解读参数
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--ip: 为容器制定一个固定的ip
--net: 指定网络模式
3. 进入容器查看redis.conf文件
发现是并没有redis.conf文件的,那么这个时候就是新手踩坑阶段了,因为没有系统的学习docker所以会花费很多时间
4.解决问题
没有配置文件这件事呢!那是因为redis容器里边的配置文件是需要在创建容器时映射进来的
那么就需要删除我们之前创建好的容器,在删除前需要先停止容器后才可以删除
创建
/server/redis/redis.conf
/server/redis/data
两个目录用于配置文件目录挂载
/soft】 # wget http://download.redis.io/releases/redis-5.0.8.tar.gz 下载在/soft
# soft】tar xzf redis-5.0.8.tar.gz 解压复制里面redis.conf文件 /soft/redis-5.0.8/redis.conf
# cp /soft/redis-5.0.8/redis.conf /server/redis/ 复制里面redis.conf文件到指定地方
docker run -p 6699:6379 --name myredis -v $PWD/redis.conf:/etc/redis/redis.conf -v $PWD/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
命令说明:
--name myredis : 指定容器名称,这个最好加上,不然在看docker进程的时候会很尴尬。
-p 6699:6379 : 端口映射,默认redis启动的是6379,至于外部端口,随便玩吧,不冲突就行。
-v $PWD/redis.conf:/etc/redis/redis.conf : 将主机中当前目录下的redis.conf配置文件映射。
-v $PWD/data:/data -d redis:3.2 : 将主机中当前目录下的data挂载到容器的/data
--redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置
更改redis.conf 文件:/etc/redis/
bind 127.0.0.1
protected-mode
yes
更改为
# bind 127.0.0.1
protected-mode no
然后重启redis,
外网客户端就可以连接了
默认情况下单机每一个redis都是一个主节点
info replication 查看主从复制的信息