docker desktop安装redis

1.拉取redis镜像

docker hub直达

复制代码
docker pull redis:latest

查看镜像

复制代码
PS C:WindowsSystem32> docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
redis                    latest    0e403e3816e8   3 days ago     113MB
mysql                    5.7       ae552624b4bd   5 days ago     448MB
docker/getting-started   latest    26d80cd96d69   3 months ago   28.5MB
hello-world              latest    feb5d9fea6a5   5 months ago   13.3kB

2.创建redis配置文件,为挂载操作做准备

在D盘创建2个文件夹

conf目录用于挂载配置文件

data目录用于存放数据持久化文件

在conf文件夹新建redis.conf文件,内容如下

复制代码
#用守护线程的方式启动 后台运行
daemonize no 
#给redis设置密码
requirepass 123456 
#redis持久化  默认是no
appendonly yes
#防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
tcp-keepalive 300 

3.构建并启动redis容器

映射到宿主16379端口

复制代码
docker run --name redis -p 16379:6379 -v /D/docker/redis/conf/redis.conf:/etc/redis/redis_6379.conf -v /D/docker/redis/data:/data/ -d redis:latest redis-server /etc/redis/redis_6379.conf --appendonly yes

--name="容器新名字":为容器指定一个名称

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-d: 后台运行容器,并返回容器ID

-v /D/docker/redis/conf/redis.conf:/etc/redis/redis_6379.conf 把宿主机配置好的redis.conf放到容器内的这个位置中

-v /D/docker/redis/data:/data/ 把redis持久化的数据在宿主机内显示,做数据备份

--net=host

4.查看容器已经在运行中

使用 QuickRedis客户端 测试链接

接下来就可以愉快的玩耍啦

进入容器

auth "123456" 注意是字符串格式的密码

redis-cli表示运行一个redis客户端 (-a 123456 指定密码)

业务代码key格式 采用 ** : 分割** user:token:10001

常见命令

复制代码
keys  *    匹配查找key  由于单线程  key很多时候 效率会降低
help @groupname      ex: help @string   也可以直接命代码   tab会有提示
del key   删除一个key
EXISTS key [key ...]   查看key是否存在
expier key 1   给key设置有效期单位秒
ttl key 查看key的有效期剩余  单位秒
查看镜像:docker images
获取一个新镜像:docker pull 镜像(ubuntu:16.04)
创建镜像:1、从已经创建的容器中更新镜像,并提交这个镜像;2、使用Dockerfile指令来创建一个新的镜像。
查看容器:docker ps -a(带-a是查看所有的,不带-a是查看启动的)
查看容器内运行的进程:docker top 容器号
查看应用程序日志:docker logs -f 容器号
创建容器:docker run -it --name 容器名 镜像名 /bin/bash
启动容器:docker start 容器名/号
重启容器:docker restart 容器名/号
停止容器:docker stop 容器名/号
删除容器:docker rm 容器名/号
进入容器:docker exec -it 容器名/号 /bin/bash

容器间通信

要想多容器之间互通,从 Web 容器访问 mysql 容器,我们只需要把他们放到同个网桥中就可以了

设置网桥以后,容器之间天然互通

复制代码
   #查看现有网桥
   1 docker network ls
   #新增我的网桥
   2 docker network create -d bridge mysql_pageplug
   # 网桥分别绑定两个容器name
   3 docker ps
     docker network connect mysql_pageplug mysql8.0
     docker network connect mysql_pageplug pageplug
   # 查看我们的网桥组中容器的IP
   4 docker network ls
     docker inspect mysql_pageplug

也可以在创建容器时使用网络别名(运行 Redis 在 test-net 网络中,别名redis) docker run -d --name redis --network test-net --network-alias redis redis:latest

当然 如果你使用 docker-compose 只需要描述依赖哪些服务放在一个yml文件下

复制代码
# 创建网络
networks:
  test_net:
    driver: bridge

其他网络命令

复制代码
 #主机模式启动
    network_mode: "host"
    restart: always


 指定网络网段和IP    docker network create --subnet=172.18.0.0/16 mynetwork

docker网络

目录挂载

为什么要目录挂载

  1. 使用 Docker 运行后,我们改了项目代码不会立刻生效,需要重新build和run,很是麻烦。
  2. 容器里面产生的数据,例如 log 文件,数据库备份文件,容器删除后就丢失了。

几种挂载方式

  1. bind mount 直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上

  2. volume 由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上

  3. tmpfs mount 适合存储临时文件,存宿主机内存中。不可多容器共享。

复制代码
bind mount 方式用绝对路径 -v D:/code:/app  挂载数组代码-> 容器
volume 方式,只需要一个名字 -v db-data:/app

docker inspect mysql8.0

参数 "RW": false的话表示只读模式,路径内文件不能被容器内程序修改

复制代码
  # 启动容器时挂载具名卷,Docker会为您创建该卷
  docker run -d -p 1234:80 -v mynginx:/usr/share/nginx/html nginx:latest
  docker volume ls
  docker (volume) inspect mynginx


"$(pwd)"/html
目录挂载

docker中文文档

相关推荐
青 春 记 忆5 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
Java王小怪6 小时前
Docker环境Redis没挂载保存数据
运维·docker·容器
梦Arrebol7 小时前
Redis 内容及相关实验
数据库·redis
AKCJDJ8 小时前
k8s的管理及控制器管理
云原生·容器·kubernetes
灰阳阳8 小时前
Docker-数据卷命令解析
java·docker·eureka
SCandL1528 小时前
k8s service
linux·容器·kubernetes
zhangfeng11339 小时前
AMD Instinct MI50(gfx906)上为 Qwen 系列模型优化并可用的 vLLM 相关仓库、Docker 镜像与实践指南。
人工智能·docker·ai编程·qwen·算子开发·vllm·mi50
只爱喝胡辣汤10 小时前
Redis Intset(整数集合)技术文档
redis
aaaBsBsBsB10 小时前
k8s pod管理
运维·docker·容器
01传说10 小时前
redis开机自启脚本
数据库·redis·缓存