QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

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

评论

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

基础篇之图形学

邱学喆

图形

微服务的冷热部署

穿过生命散发芬芳

微服务 12月月更

亚马逊 CTO Werner Vogels:2023 年及未来五大技术趋势预测

亚马逊云科技 (Amazon Web Services)

人工智能 大数据 亚马逊云科技

架构实战营模块1第2课 - 如何画出优秀的架构图

净意

MySQL锁,锁的到底是什么?

Java永远的神

MySQL 数据库 程序员 面试 后端

100页6W字的Java面试题,去过大厂面试的程序员都说被问到过

钟奕礼

Java 程序员 java面试 java编程

模块一作业

闲人Eric

架构实战营

关于Linux中作业调度 crond 和 systemd.timer 使用场景

山河已无恙

Linux Kenel 12月月更

“算法考核没过,老板找我聊了3个小时”:离职程序员重刷数学题

钟奕礼

Java 程序员 java面试 java编程

面向场景级的业务资产沉淀和开放

原力在线

架构 DDD 场景 业务资产

程序员:平安Java岗面试耗尽了我毕生所学,想了想,还是去阿里吧

钟奕礼

Java 程序员 java面试 java编程

Apache NiFi + MatrixDB 20行代码实现数据实时入库!

YMatrix 超融合数据库

三一重工 超融合数据库 YMatrix apachenifi nifi

黑盒测试 vs 白盒测试

agnostic

测试 黑盒测试 白盒测试

下次面试再一上来就问我线程有哪些状态,我上去就是给他一 jio

钟奕礼

Java 程序员 java面试 java编程

关于Linux中通过 Systemd.Path监听配置文件更新自动重启服务的一些笔记

山河已无恙

12月月更

关于Linux下Mysql集群同步(主从、一主多从、主从从)部署及同步策略的一些笔记

山河已无恙

12月月更

嵌入式系统软件架构

timerring

嵌入式 12月月更

防治“虚假种草”,小红书技术团队干了这几件大事

小红书技术REDtech

关于K8s中资源配置范围管理(LimitRange)的一些笔记

山河已无恙

12月月更

Nginx动静分离、缓存配置、性能调优、集群配置

C++后台开发

nginx 中间件 性能调优 后端开发 C++开发

使用CSS实现图片的磨砂玻璃效果

山河已无恙

12月月更

java面试官:程序员,请你告诉我是谁把公司面试题泄露给你的?

钟奕礼

Java 程序员 java面试 java编程

Python程序打包

ITCamel

PyQt5 Python打包 打包exe

迎战大厂!“金九银十”和秋招通过率达95%的Java面试要点集锦

钟奕礼

Java 程序员 java面试 java编程

极客时间运维进阶训练营第五周作业

老曹

Flink on Yarn三部曲之二:部署和设置

程序员欣宸

flink YARN 12月月更

Spotify高质量工程生产力实践

俞凡

DevOps 大厂实践 spotify 质量工程

问题处理,可别头疼医头脚疼医脚

靠谱的程序员

运维进阶训练营 -W06H

b1a2e1u1u

运维

程序员,阿里P8java大神讲的Spring大家族原理汇总,你确定不看?

钟奕礼

Java java面试 java编程 程序员‘

接口隔离原则介绍

杨充

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