【云原生】1.5 Docker 进阶实战

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 创建一个redis (mkdir redis),然后打开 redis(cd redis),准备好配置文件(vi redis.conf),输入 :wq 退出并保存。redis使用自定义配置文件启动(记得要添加安全组)

  哈喽~大家好呀,到现在目前为止我们已经学习了4篇文章了,这篇呢我们就开始实战了。


一、创建Java应用

我们在 Spring 的官网下载配置(如下图所示,记得添加 web 与 sql),然后我们用 IDEA 来打开

image.gifimage.png

二、 部署redis

我们这里要安装 redis,输入指令 docker pull redis,我们打开到 data (cd data)中,然后创建一个 redis (mkdir redis),然后打开 redis(cd redis),准备好配置文件(vi redis.conf),输入 :wq 退出并保存。

redis使用自定义配置文件启动(这里有个细节,记得要添加安全组)

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

image.gif

image.png

这时我们要使用一个工具——RedisDesktopManager,输入name、host、port、测试一下,ok,没问题。

image.png

三、redis设置密码访问

和我们上面一样,先配置文件(vi redis.conf),然后使用命令 requirepass abc123abc

格式:requirepass + 密码,输入 :wq 退出并保存

image.png

🎉 然后我们重启一下,输入重启指令

docker restart myredis

image.gif

我们再来打开工具 RedisDesktopManager 重新测试一下,发现连不上了,没错这时我们需要密码了。重新 Connect to Redis Server,再次测试一下。

image.png

四、统计访问人数场景

🎄我们这里打开 IDEA,在 application.properties 配置 host 与 password,附上代码

spring.redis.host=139.198.175.74
spring.redis.password=abc123abc

image.gif

🎄创建 CounterController.java 文件,写入代码

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CounterController {
    @Autowired
    StringRedisTemplate redisTemplate;
    @GetMapping("/hello")
    public String count(){
        Long increment = redisTemplate.opsForValue().increment("count-people");
        return "有 【"+ increment +"】 人访问了这个页面";
    }
}

image.gif

完成之后,在浏览器的地址栏输入 localhost:8080/hello,(hello 是 @GetMapping("/hello") 里面设置的地址),我们看看效果。

75a73e4fb6b24ee59763eb6705f584a9.gif

五、Dockerfile 构建任意应用镜像

我们之前运行 java,是怎样的呢?以 java 为例,

    • SpringBoot 打包成可执行 jar
    • 把jar包上传给服务
    • 服务器运行 java -jar

    也就是说我们在要安装环境在运行,如何我们在另一台主机运行,我们还要安装环境,非常麻烦。

    所以我们有没有这样的一个东西,能让我们其他主机不用安装环境也能运行。

    我们用 IDEA 在我们之前的项目里面新建个文件叫 Dockerfile,写入代码:

    FROM openjdk:8-jdk-slim
    LABEL maintainer=leifengyang
    COPY target/*.jar   /app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]

    image.gif

    🎉新建个文件夹,然后把 Dockerfile 与 jar 包上传。

    image.gifimage.png

    🎉然后我们开始构建镜像

    docker build -t java-demo:v1.0 .

    image.gifimage.png

    image.gif

    🎉构建之后我们再启动镜像

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    image.png

    然后我们再地址栏输入 “主机号 : 8080/hello” ,我们所有人就都能访问了(记得设置一下安全锁)

    六、应用分享与启动

    如何分享镜像?

    💎登录docker hub

    docker login

    image.gif

    💎给旧镜像起名

    docker tag java-demo:v1.0  leifengyang/java-demo:v1.0

    image.gif

    💎推送到 docker hub

    docker push leifengyang/java-demo:v1.0

    image.gif

    💎别的机器

    docker pull leifengyang/java-demo:v1.0

    image.gif

    💎别的机器运行

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    💎启动应用容器

    docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

    image.gif

    好了,截止到这里我们的 Docker 基础部分已经全部讲完了,下一篇预告 2.1 Kubernetes-基础概念。


    相关实践学习
    基于Redis实现在线游戏积分排行榜
    本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
    云数据库 Redis 版使用教程
    云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
    相关文章
    |
    5天前
    |
    Kubernetes Cloud Native Docker
    云原生时代的容器化实践:Docker和Kubernetes入门
    【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
    23 2
    |
    3天前
    |
    运维 Cloud Native 虚拟化
    一文吃透云原生 Docker 容器,建议收藏!
    本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
    一文吃透云原生 Docker 容器,建议收藏!
    |
    1月前
    |
    Kubernetes Cloud Native 云计算
    云原生入门:从Docker到Kubernetes的旅程
    【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
    83 5
    |
    17天前
    |
    SQL 关系型数据库 数据库
    国产数据实战之docker部署MyWebSQL数据库管理工具
    【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
    56 4
    国产数据实战之docker部署MyWebSQL数据库管理工具
    |
    20天前
    |
    Kubernetes Cloud Native 开发者
    云原生技术入门:Kubernetes和Docker的协作之旅
    【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
    31 3
    |
    26天前
    |
    Kubernetes Cloud Native 开发者
    探秘云原生计算:Kubernetes与Docker的协同进化
    在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
    |
    1月前
    |
    安全 Cloud Native Shell
    云上攻防:云原生篇&Docker容器逃逸
    本文介绍了Docker的基本概念及其对渗透测试的影响,重点讲解了容器逃逸的方法。Docker是一种轻量级的容器技术,与虚拟机相比,具有更高的便携性和资源利用率。然而,这也带来了安全风险,特别是容器逃逸问题。文章详细描述了三种常见的容器逃逸方法:不安全的配置、相关程序漏洞和内核漏洞,并提供了具体的检测和利用方法。此外,还介绍了几种特定的漏洞(如CVE-2019-5736和CVE-2020-15257)及其复现步骤,帮助读者更好地理解和应对这些安全威胁。
    云上攻防:云原生篇&Docker容器逃逸
    |
    1月前
    |
    Kubernetes Cloud Native Docker
    云原生入门:Kubernetes和Docker的协同之旅
    【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
    |
    1月前
    |
    Kubernetes Cloud Native 持续交付
    云原生之旅:Docker容器化与Kubernetes集群管理
    【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
    |
    1月前
    |
    Kubernetes Cloud Native Docker
    云原生时代的容器化实践:Docker与Kubernetes入门
    【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。