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中文文档

相关推荐
Benszen44 分钟前
Docker容器化技术实战指南
运维·docker·容器
Hommy881 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组3 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪3 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人3 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
风吹迎面入袖凉4 小时前
【Redis】Redis的五种核心数据类型详解
java·redis
a里啊里啊5 小时前
Redis面试题记录
数据库·redis·缓存
开心码农1号6 小时前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
__土块__6 小时前
大厂后端一面模拟:从线程安全到分布式缓存的连环追问
jvm·redis·mysql·spring·java面试·concurrenthashmap·大厂后端
L1624766 小时前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes