docker部署redis实战

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: docker部署redis实战

什么是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。


1. $ docker run -d redis
2. 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

ips:默认情况下,主机上的端口映射到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也是可以的。


1. $ docker port redisDynamic 6379
2. 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

访问正在运行的dockerdocker 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呢?


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis缓存数据实战
Redis入门到通关之Redis缓存数据实战
|
2天前
|
运维 Linux 虚拟化
Docker详解(三)——Docker安装与部署
Docker详解(三)——Docker安装与部署
30 4
|
2天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1
|
3天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
35 1
|
6天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
58 7
|
9天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
49 1
|
13天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
38 3
|
16天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
17天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
28 0
|
17天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
32 0

热门文章

最新文章