QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:442709

评论

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

“智慧粮仓”守卫中国饭碗

ThingJS数字孪生引擎

大前端 物联网 可视化

四种 AI 技术方案,教你拥有自己的 Avatar 形象

阿里云CloudImagine

人工智能 阿里云 计算机视觉 视频云 元宇宙

【高并发】开篇:线程与多线程

冰河

Java 并发编程 多线程 高并发 异步编程

GitHub远程免密连接详解,还顺手解决了RPC失败HTTP413

老表

GitHub RPC HTTP 11月日更

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

淋雨

Camtaisa

常用的Nmap脚本及使用实例

喀拉峻

网络安全 信息安全 渗透测试 脚本 nmap

Hexo个人博客快速部署到Gitee&Coding详细教程

老表

Hexo gitee CODING 博客配置 11月日更

百度鸿鹄芯片落地首款量产车吉利博越X 智能车机体验惊艳成都车展

百度开发者中心

百度 车联网 鸿鹄芯片

百度Apollo参编首批汽车信息安全国家标准,跻身车联网信息安全第一梯队

百度开发者中心

Apollo

端开发技术——5个高效的Flutter开发工具

思想者杰克

Github上线仅六天,收获Star超55K+,这套笔记能拿下90%以上面试

Java redis spring 程序员 架构

行业白皮书发布!百度智慧城市助力城市“双碳”目标达成

百度开发者中心

人工智能 智慧城市

TDengine在浙商银行微服务监控中的实践

TDengine

tdengine 后端 时序数据库

操作系统——计算机硬件简介

思想者杰克

《黑客之道》kali Linux之NMAP高级使用技巧和漏洞扫描发现

学神来啦

Linux 渗透 kali nmap

ReplacingMergeTree:实现Clickhouse数据更新

华为云开发者联盟

数据 事务 Clickhouse 数据更新 OLAP数据库

极客时间【架构实战营】第二期 模块七作业

Geek_91606e

架构实战营

阿里云视频云,用技术普惠打造平民化“虚拟人”

阿里云CloudImagine

人工智能 阿里云 视频云 数字人 虚拟人

接口文档工具yapi的安装

小鲍侃java

11月日更

科大讯飞联袂伯俊科技进军3C零售,构建发展新格局

科技热闻

架构实战营-总结

哈希

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java spring 程序员 JVM hashmap

恒源云(GPUSHARE)_CAN: 借助数据分布提升分类性能

恒源云

深度学习

百度智能云与雅量商业智能携手,加速零售行业智能化升级

百度开发者中心

百度智能云 零售行业

百度智能云人脸采集SDK通过CFCA权威安全测评

百度开发者中心

安全 sdk

万字长文解密数据异构最佳实践(含完整代码实现)!!

冰河

MySQL 数据库 canal 数据同步 数据异构

科技热点周刊|ClickHouse 融资 2.5 亿美元、个人信息保护法正式实施、Facebook 改名 Meta

青云技术社区

云计算 facebook 云原生

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

华为云开发者联盟

算法 时间序列 华为云数据库 深度神经网络

你需要知道的 19 个 console 实用调试技巧

CRMEB

CSS JavaScript DOM console crmeb

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

Java 编程 程序员 程序人生 springboot

linux lsquic 编译

webrtc developer

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