一 取最新版的 Redis 镜像
输入命令 docker pull redis:latest
安装完成
二 查看是否安装成功
docker images
三 建立映射目录
mkdir -p /data/redis/redis01/data
mkdir -p /data/redis/redis01/conf
四 启动Redis
docker run -p 6379:6379 --name redis01 -v /data/redis/redis01/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/redis01/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
1. -p 6379:6379 容器redis 端口6379 映射 宿主机未6379
2. --name redis01 容器 名字 为 redis01
由于所有的docker的映射文件都存放在 /data下便于统一管理 所以都映射到根目录下
3. -v /data/redis/redis01/conf/redis.conf:/etc/redis/redis.conf 容器 /etc/redis/redis.conf 配置文件 映射宿主机 /data/redis/redis01/conf/redis.conf。 会将宿主机的配置文件复制到docker中。
重要: 配置文件映射,docker镜像redis 默认无配置文件。
4 -v /data/redis/redis01/data:/data 容器 /data 映射到宿主机 /data/redis/redis01/data
5.-d redis 后台模式启动 redis
6. redis-server /etc/redis/redis.conf redis 将以 /etc/redis/redis.conf 为配置文件启动
7. --appendonly yes 开启redis 持久化
启动后报错
docker: Error response from daemon: driver failed programming external connectivity on endpoint redis01 (9aed570f77e42b6c45979cae7026f1bc04f03b4cf7a008cfe6197617c000464a): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --to-destination 172.17.0.2:6379 ! -i docker0: iptables: No chain/target/match by that name.
解决方法
docker服务启动时定义的自定义链DOCKER被清除
重启即可systemctl restart docker
如果你未重启docker 而二次安装就会看到如下错误
docker: Error response from daemon: Conflict. The container name "/redis01" is already in use by container "64e8e6545d17118f24e402c3cdeaf337b2e73d4be1607d4c3bbd2d3d504a5e54". You have to remove (or rename) that container to be able to reuse that name.
提示你 Redis已经使用中 可以docker ps -a 查看
重启docker 后 docker restart redis01 即可