首页 > 数据库 >docker部署redis实战

docker部署redis实战

时间:2023-01-03 15:03:40浏览次数:43  
标签:实战 容器 run redis 6379 docker 运行


点 击上方 “ 编程三分钟 ”,马上关注,每天早上8:50准时推送。


 换电脑的时候不想再搭建开发环境了!——编程三分钟


什么是docker

Docker是一个用来管理容器的应用程序,而容器就是模拟运行应用程序所依赖环境的一个服务。一般一个容器内只安装一个程序,在容器内的应用程序会认为自己是机器上运行的唯一进程,一台机器可以独立运行多个容器。

使用容器的好处就是不用再繁琐的配置运行环境,便于构建、测试、持续集成;可以动态扩容和缩容、充分利用一台服务器跑多个服务,因此在本机就可以模拟出微服务架构。

当然,我个人觉得最爽的一点还是可以在容器里随意的开发测试,但也不用担心把自己心爱的电脑搞的乱七八糟了。

准备

  • 一台安装docker的机器
  • 能通网并访问最新版本的Docker Engine (服务端)
  • 本地开发机器安装了Docker Client(Docker 命令行工具),可通过命令行访问。

运行容器

可以在 官网上 搜索到现成的镜像,也可以用以下方式查找容器,命令格式:

docker search <name>

实际执行

$ docker search redis
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redis Redis is an open source key-value store that… 7023 [OK]
bitnami/redis Bitnami Redis Docker Image 114 [OK]
省略……

我们找到了redis的OFFICIAL(官方)docker 镜像名就是redis,为了让它能提供服务,我们接下来的任务就是让他作为后台服务运行,命令格式:

$ docker run <options> <image-name>

默认情况下,Docker将在前台运行命令。要在后台运行,需要指定选项-d。

$ docker run -d redis
570315fb8a0596ff5581653a77f8ef406f86a0ab4b1a2061de7a423335812ed3

默认情况下,Docker将运行最新版本。如果需要特定版本,则需要将其显式的指定出来。

$ docker run -d redis:3.2

由于这是我们第一次使用Redis镜像,所以它将被下载到Docker主机上,如果本地存在就不会了。

查看运行中的容器

可以用​​docker ps​​命令列出所有正在运行的容器,包括用于启动容器的镜像和正常运行的时间等信息。

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
570315fb8a05 redis "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 6379/tcp elastic_mclean

列出正在运行的容器的更多详细信息,例如IP地址,命令格式如下:

docker inspect <friendly-name|container-id>

通过docker logs命令可以查看容器的日志,命令格式如下:

docker logs <friendly-name|container-id>

访问redis

我们现在用容器部署成功了一个redis,但是和直接安装一个redis不一样,容器就像一台虚拟机一样,想要访问服务,要不就进入到里面,要不就通过暴露端口像远程访问一样来进行访问。

​-p <host-port>:<container-port>​​选项可以在启动容器的时候绑定端口。

这个时候使用​​-name <name>​​来在启动容器的时候定义一个名称,以后查询以及查看日志都会比较方便。

因为redis默认占用6379端口,我们可以将端口6379映射到本地的6379

$ docker run -d  --name redisHostPort -p 6379:6379 redis:latest
694384d739307f3c5bc59fa

tips:默认情况下,主机上的端口映射到0.0.0.0,可以在定义端口映射的时候指定特定的IP,例如-p 127.0.0.1:6379:6379

假设我们要部署多个redis不可能每次都自己亲手来找一个端口来映射,docker是支持自动绑定到可用端口上的,只要用​​-p 6379​​这个参数就可以了,像下面这样。

$ docker run -d --name redisDynamic -p 6379 redis:latest
dcd3dabe51c3f0a8ddbdfd

到底绑定了哪个端口,可以用以下命令查询(这个时候就用到自定义的名称redisDynamic了),当然直接用​​docker ps​​也是可以的。

$ docker port redisDynamic 6379
0.0.0.0:32768

存储数据

在使用容器的时候我们会发现,一旦创建和删除、升级容器,里面存储的数据也就随风而去了,所以我们必须想办法把数据存储下来。

我们查询到官网上的redis镜像存储数据的目录在​​/data​​​目录,然后我们存储在本地​​/opt/docker/data/redis​​​​-v 本机位置:容器内位置​

docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis
c9c154695500260407d99d

当然了,也可以把配置文件重定向到本地,可以把所有的容器配置、日志、数据统一管理,非常的方便。

与平台交互

​docker run ubuntu ps​​​ 启动Ubuntu容器并执行命令ps以查看容器中运行的所有进程。​​docker run -it ubuntu bash​​直接访问容器内的bash shell。

$ docker run ubuntu ps
PID TTY TIME CMD
1 ? 00:00:00 ps
$ docker run -it ubuntu bash
root@6db973337059:/# exit

访问正在运行的docker​​docker attach <container>​​​ 要attach上去的容器必须正在运行。​​docker exec -it <container> bash|sh​​直接访问容器内的bash shell。

$ docker attach c9c154695500 /bin/bash
root@c9c154695500:/data# exit
$ docker exec -it c9c154695500 /bin/bash
root@c9c154695500:/data# exit

这里也可以直接用容器name

  • attach 直接进入容器,不会启动新进程
  • exec 在容器中打开新终端,会启动新进程

那什么时候用attach,什么时候用exec呢?



标签:实战,容器,run,redis,6379,docker,运行
From: https://blog.51cto.com/u_12392289/5985774

相关文章

  • 从Redis、HTTP协议,看Nett协议设计,我发现了个惊天大秘密
    1.协议的作用TCP/IP中消息传输基于流的方式,没有边界协议的目的就是划定消息的边界,制定通信双方要共同遵守的通信规则2.Redis协议如果我们要向Redis服务器发送一......
  • Redis实现消息队列
    异步消息队列说道消息队列,你肯定会想到Kafka、Rabbitmq等消息中间件,这些专业的消息中间件提供了很多功能特性,当然他的部署使用维护都是比较麻烦的。如果你对消息队列没那......
  • redis集群配置
    redis集群配置1、三主三从redis集群配置1、新建6个docker容器实例##--cluster-enabledyes 开启redis集群##--nethost 使用宿主机的ip和端口默认##--appendonlyyes ......
  • 【实战】前端JS环境下的渗透小技巧
    前端JS环境下的渗透小技巧https://mp.weixin.qq.com/s?__biz=MzI4MjI2NDI1Ng==&mid=2247484261&idx=1&sn=4b01cb98de0e589e7c7cb9d25dea3031&chksm=eb9dd4cadcea5ddc9b42c......
  • 【深入浅出Sentinel原理及实战】「基础实战专题」零基础实现服务流量控制实战开发指南
    你若要喜爱你自己的价值,你就得给世界创造价值。Sentinel的组成部分Sentinel主要由以下两个部分组成。Sentinel核心库(Java客户端):Sentinel的核心库不依赖任何框架或库,能够运......
  • 【实战】一次简单的"云"上野战记录
    公众号链接https://mp.weixin.qq.com/s?__biz=MzI4MjI2NDI1Ng==&mid=2247484232&idx=1&sn=f8a4e82afaebec81d3f0d6eb7afe4ebc&chksm=eb9dd4e7dcea5df17eb634fc9d0fff4c1ba......
  • docker的生命周期
        所有博客仅用于自己学习记录,如有侵权请联系删除,文章来源于公开视频资料,如有需要请移步这里:https://www.bilibili.com/video/BV1o14y1w7b8?p=11&vd_source=6a0......
  • Docker 的四种网络模式
    Docker有bridge、none、host、container四种网络模式,提供网络隔离、端口映射、容器间互通网络等各种支持,下面开门见山地直接介绍这四种网络模式。这四种网络模式可以......
  • MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建
    前言:前面的四个章节我们主要讲解了MongoDB的相关基础知识,接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程。MongoDB从入门到实战的相关教程......
  • nginx-clojure docker 镜像
    主要是一个测试,方便学习使用nginx-clojure强大的能力dockerfile直接基于了openjdk:10-slim基础镜像,同时基于copy文件的格式处理FROMopenjdk:10-slimWOR......