麦克斯仇
Think different
159
文章
27969
阅读
首页
INDEX
文章
ARTICLE
关于
ABOUT
Docker 环境安装 Redis
创建日期:
2020/09/10
修改日期:
2024/07/15
Docker
Redis
> 以Redis6.2.14为例 仓库地址以及教程:[https://hub.docker.com/_/redis](https://hub.docker.com/_/redis) # 拉取 ```bash docker pull redis:6.2.14 ``` # 使用 ## 快速使用 > 例:(先快速创建一个,保证可用) ```bash # 启动 docker run --name redis -d redis:6.2.14 # 查看启动日志 docker logs redis # 删除 docker rm -f redis ``` ## 解决WARNING 在`快速使用`查看日志时,会发现四个`WARNING`,关于WARNING的描述详见:[CentOS7 Debian12 安装 Redis6.2.x](https://maxqiu.com/article/detail/50) ### WARNING 1 未使用自定义配置文件 跳过,后面教程会设置配置文件 ### WARNING 2 TCP backlog 值太小 > 如果修改宿主系统的`/etc/sysctl.conf`配置文件,然后重新创建容器,并不会解决问题,也就是说宿主机的修改不会对容器产生影响。针对`docker`需要使用`docker run --sysctl map`进行配置 例:(仅示例,不需要执行) ```bash docker run --sysctl net.core.somaxconn=512 --name redis -d redis:6.2.14 ``` ### WARNING 3 overcommit_memory 不能设置为 0 编辑配置文件 ```bash vim /etc/sysctl.conf ``` 添加如下内容 ``` net.core.somaxconn = 1024 vm.overcommit_memory = 1 ``` 生效 ```bash sysctl -p ``` > 如果按照`WARNING 2`的解决方式添加`-- sysctl`发现是不允许的,根据docker官方文档:[Configure namespaced kernel parameters (sysctls) at runtime](https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime),`-- sysctl`仅支持部分选项 ## 自定义配置 嫌麻烦的可以直接点击右侧菜单的`个人推荐实战` ### 自定义配置文件 > 获取默认配置文件 默认配置文件需要下载对应版本的源码包,解压后有一个`redis.conf`文件。 - 直接下载:[https://download.redis.io/releases/](https://download.redis.io/releases/) 1. 点击下载对应版本源码包, 2. 解压后上传`redis.conf`文件 - 查看地址:[https://github.com/redis/redis-hashes/blob/master/README](https://github.com/redis/redis-hashes/blob/master/README) 1. 复制对应版本下载地址 2. 使用`wget`命令下载 3. 解压源码包,获取`redis.conf`文件。 例:(仅示例,不需要执行) ```bash wget http://download.redis.io/releases/redis-6.2.14.tar.gz tar -zxf redis-6.2.14.tar.gz ``` > 修改配置文件 例:(仅示例,不需要执行) 编辑配置文件 ```bash vim /root/redis.conf ``` ```ini # 允许任意IP访问 bind 0.0.0.0 # 关闭保护模式(未设置密码时,允许空密码访问) protected-mode no # 连接密码(设置初始密码,默认为空,建议设置) requirepass 123 # 开启AOF appendonly yes ``` > 使用配置文件 创建容器(配置文件映射到容器中可以放在任意位置,只需要redis-server后面的路径跟着改变即可) 例:(仅示例,不需要执行) ``` docker run -d --name redis --sysctl net.core.somaxconn=512 -v /root/redis.conf:/etc/redis/redis.conf redis:6.2.14 redis-server /etc/redis/redis.conf ``` ### 自定义数据存储路径 > 容器内默认数据在`/data/`目录下,使用`-v`将文件映射到自定义目录下 例:(仅示例,不需要执行) ```bash docker run -d --name redis --sysctl net.core.somaxconn=512 -v /root/redis.conf:/etc/redis/redis.conf -v /data/:/data/ redis:6.2.14 redis-server /etc/redis/redis.conf ``` ### 设置端口 > `Redis`默认端口为`6379`,使用`-p`参数将端口映射出来 例:(仅示例,不需要执行) ```bash docker run -d --name redis --sysctl net.core.somaxconn=512 -v /root/redis.conf:/etc/redis/redis.conf -v /data/:/data/ -p 6379:6379 redis:6.2.14 redis-server /etc/redis/redis.conf ``` ### 时区 默认镜像的时区为`UTC+0`,使用`-e TZ=Asia/Shanghai`设置中国时区`UTC+8` # 个人推荐实战 1. `mkdir -p /work/redis`:在Linux跟路径下新建`work`目录用于存放工作数据,在`/work/`下新建`redis`目录用于存储Redis容器数据 2. `mkdir -p /work/redis/data`:在`/work/redis/`下新建`data`目录,用于存储Redis数据文件 3. `mkdir -p /work/redis/config`:在`/work/redis/`下新建`config`目录,用于存储Redis配置文件 4. 获取Redis默认配置文件并存放在`/work/redis/config`目录下 ```bash wget http://download.redis.io/releases/redis-6.2.14.tar.gz tar -zxf redis-6.2.14.tar.gz cp ./redis-6.2.14/redis.conf /work/redis/config/ rm -rf redis-6.2.14* ``` 5. `vim /work/redis/config/redis.conf`修改默认配置文件 ```ini # 允许任意IP访问 bind 0.0.0.0 # 关闭保护模式(未设置密码时,允许空密码访问) protected-mode no # 端口(默认6379) port 6379 # 连接密码(设置初始密码,默认为空,建议设置) requirepass 123 # 开启AOF appendonly yes ``` 6. 运行容器 ```bash docker run -d --restart always --name redis \ --sysctl net.core.somaxconn=512 \ -v /work/redis/config/redis.conf:/etc/redis/redis.conf \ -v /work/redis/data/:/data/ \ -p 6379:6379 \ -e TZ=Asia/Shanghai \ redis:6.2.14 redis-server /etc/redis/redis.conf ```
17
全部评论