写点什么

Arun Gupta:使用 Docker 和 Kubernetes 部署 Java EE 应用的方法

  • 2015-04-01
  • 本文字数:1347 字

    阅读完需:约 4 分钟

Arun Gupta 在 2015 年 JavaLand 大会上,展示了多种使用 Docker Kubernetes 部署 Java EE 应用的方法。Gupta 讲述了容器对于部署和管理应用的优势,容器具备快速部署、隔离性和可移植性等优点。使用容器集群管理系统,比如 Kubernetes,可以将 Docker 容器相关的管理作为唯一单位,简化了跨主机通信的实现,保证了可用性和可扩展性。

Red Hat 软件的开发者宣传董事 Gupta,在 JavaLand 的演讲首先介绍了 Docker ,开源项目 Docker 可用于基于 (LXC)[ https://linuxcontainers.org/ ]软件容器应用的自动部署。使用Docker 胜于更传统的部署机制之处包括更快的部署、隔离性、可移植性、限制资源使用的能力,以及提供安全沙箱。

接下来,Gupta 演示了九种使用Docker 打包和部署Java EE 应用的方法。这些方法包括使用 Docker Machine 安装 Docker、运行在单个 Docker 容器内的 WildFly Java EE 应用服务器使用 H2 内存数据库,以及分别在两个容器中部署应用服务器和数据库并通过容器的link 进行通信。

除此之外的方法还包括使用 Fig Docker Compose 这两种编排工具定义多应用和多容器环境。Gupta 还演示了如何在为服务发现预配置 IP 地址的两台主机上部署容器,以及如何使用 Eclipse IDE 管理基于 Docker 的开发阶段的部署。在整个介绍的最后部分,Gupta 概述了 Arquillian Cube 的使用,通过 Maven 构建工具的 surefire-plugin 插件,在测试生命周期内控制 Docker 镜像的生命周期。

接下来,Gupta 的演示探讨了使用 Google 的 Kubernetes 集群管理系统,部署和管理 Java EE 应用。Kubernetes 是一种 Docker 容器的开源编排系统,其核心概念包括:pod,用于组合在一起将容器编组,以便共享IP 和存储卷;service,用于为pod 集合提供唯一不变的名称,还可以用作负载均衡;replication controller,用于管理pod 的生命周期并确保任何时间正在运行的service 数量不低于预定值。

Gupta 演示了基于 Kubernetes 的方法,包括使用 Vagrant 以加载并运行本地 Kubernetes 开发环境集群,WildFly 应用服务器 service 的创建以及与 MySQL service 的通信,还有使用 replication controller 确保运行指定数量的应用服务器 service。

Gupta 表示 Docker 和 Kubernetes 是有益于部署和管理 Java EE 应用的工具。 除了上面提及的 Docker 的优点之外,Kubernetes 还可以将 Docker 容器相关的管理作为唯一单位,有助于跨主机通信,并且通过自动化部署和监控 pod 及其跨主机的复本,从而保证了可用性和可扩展性。

这种方式的潜在缺点包括,在 Docker 中没有包含更高级别的加载或者使用情况追踪能力(但是通过额外的工具可以实现),使用 Kubernetes 部署应用有可能会导致复杂的生命周期,包括构建、部署、管理和升级(包括改造已有应用支持这一过程)。

前述方法的更多信息和全部细节详见 Gupta 的博客 _“ Miles to go 2.0 ”_ 和他帐号下的 slideshare 。JavaLand 是在德国布吕尔召开的年度 Java 大会,详情参见 JavaLand 事件网站

查看英文原文: Arun Gupta: Recipes for Deploying Java EE Apps with Docker and Kubernetes


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-01 06:443124

评论

发布
暂无评论
发现更多内容

Java对象的使用和对象内存图解

共饮一杯无

Java 对象 10月月更

React循环DOM时为什么需要添加key

beifeng1996

React

【LeetCode】合并两个有序链表Java题解

Albert

算法 LeetCode 10月月更

深度解析:智能合约DAPP(bsc)币安链系统项目开发解决方案

I8O28578624

流程引擎的架构设计

京东科技开发者

架构设计 报表 workflow BPM 流程引擎

带你认识JDK8中超nice的Native Memory Tracking

华为云开发者联盟

开发 华为云

阿里内部最新发布的并发图册+JDK源码速成笔记,终于解脱束缚了

Geek_0c76c3

Java 源码 程序员 JVM 开发

22道js输出顺序问题,你能做出几道

loveX001

JavaScript

JVM诊断工具中的深堆、浅堆、支配树,你都明白吗

JAVA旭阳

Java JVM 10月月更

开源无国界,从openEuler Maintainer到Spark Committer的贡献开源之路

openEuler

spark 开源 openEuler

国产分布式数据库发展趋势与难点

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库 企业号十月PK榜 企业号十月 PK 榜

数字化背景下,低代码发展的动力和阻力

飞算JavaAI开发助手

金九银十前端面试题总结(附答案)

loveX001

JavaScript

面向对象思想和Java中类的定义

共饮一杯无

Java 面向对象 10月月更

为什么编程第一课都要学Hello World?

博文视点Broadview

给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能

汪子熙

spring 云原生 Cloud SAP 10月月更

PriorityQueue源码-成员变量解析

知识浅谈

Priority Queue 10月月更

数据中台选型前必读:数据中台与大数据平台有什么区别

雨果

数据中台 大数据平台

SAST + SCA: 结合使用安全升级

SEAL安全

SCA 安全测试 攻击 SAST 应用安全测试

聚焦六大典型应用场景,博云金融行业容器解决方案更新发布!

BoCloud博云

云计算 云原生 容器云

使用Mask R-CNN模型实现人体关键节点标注

华为云开发者联盟

人工智能 华为云 mask 企业号十月 PK 榜

分享一个好问题:企业为什么要区分数据中台和数据平台?

雨果

数据中台 大数据平台

Python进阶(二十)Python爬虫实例讲解

No Silver Bullet

Python 数据分析 10月月更

React组件之间的通信方式总结(下)

beifeng1996

React

react高频面试题自测

beifeng1996

React

资源成本降低80%!Serverless云函数的弹性架构实践

极客天地

华为云确定性运维,为政务云平台稳定可靠运行保驾护航

华为云开发者联盟

云计算 华为云 政务云 企业号十月PK榜

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

自制操作系统系列(三):加载其他文件执行

操作系统

Arun Gupta:使用Docker和Kubernetes部署Java EE应用的方法_DevOps & 平台工程_Daniel Bryant_InfoQ精选文章