获取镜像
1
2
docker search redis
docker pull redis
创建容器
1. 创建相关文件夹
1
2
# 这里我们在 /home/docker 下创建
mkdir /home/docker/redis/{conf,data} -p
2. 进入文件夹目录下
1
cd /home/docker/redis
3. 获取 redis 的默认配置文件模版
1
2
3
4
5
6
7
8
9
10
# 获取 redis 的默认配置模版
# 这里主要是想设置下 redis 的 log / password / appendonly
# redis 的 docker 运行参数提供了 --appendonly yes 但没 password
wget https://gitee.com/hanxt/boot-launch/raw/master/src/main/resources/otherconfig/redis.conf -O conf/redis.conf
# 直接替换编辑
sed -i 's/logfile ""/logfile "access.log"/' conf/redis.conf;
sed -i 's/# requirepass foobared/requirepass 123456/' conf/redis.conf;
sed -i 's/appendonly no/appendonly yes/' conf/redis.conf;
sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' conf/redis.conf;
- sed -i是linux文件替换命令,替换格式为s/被替换的内容/替换之后的内容/
- 替换logfile ““为logfile “access.log”,指定日志文件名称为access.log
- 替换# requirepass foobared为requirepass 123456,指定访问密码为123456
- 替换“appendonly no“为”appendonly yes”,开启appendonly模式
- 替换绑定IP“bind 127.0.0.1”为“bind 0.0.0.0”
protected-mode 是在没有显式定义 bind 地址(即监听全网段),又没有设置密码 requirepass时,protected-mode 只允许本地回环 127.0.0.1 访问。所以改为bind 0.0.0.0
4. 创建容器
1
2
3
4
5
6
7
8
# 创建并运行一个名为 myredis 的容器
docker run \
-p 6379:6379 \
-v $PWD/data:/data \
-v $PWD/conf/redis.conf:/etc/redis/redis.conf \
--privileged=true \
--name myredis \
-d redis:5.0.5 redis-server /etc/redis/redis.conf
命令含义
1
2
3
4
5
6
7
8
9
# 命令分解
docker run \
-p 6379:6379 \ # 端口映射 宿主机:容器
-v $PWD/data:/data:rw \ # 映射磁盘目录 rw 为读写,宿主机目录:容器目录
-v $PWD/conf/redis.conf:/etc/redis/redis.conf:ro \ # 挂载配置文件 ro 为readonly
--privileged=true \ # 给与一些权限
--name myredis \ # 给容器起个名字
-d redis redis-server /etc/redis/redis.conf # deamon 运行容器 并使用配置文件启动容器内的 redis-server
## $PWD是当前目录,也就是/home/docker/redis
查看容器情况
1
2
3
4
5
6
7
8
# 查看活跃的容器
docker ps
# 如果没有 myredis 说明启动失败 查看错误日志
docker logs myredis
# 查看 myredis 的 ip 挂载 端口映射等信息
docker inspect myredis
# 查看 myredis 的端口映射
docker port myredis
访问测试
1
2
docker exec -it myredis bash
redis-cli