专栏首页为学将Java EE应用程序部署到Docker Swarm集群

将Java EE应用程序部署到Docker Swarm集群

什么是Docker Swarm?

Docker SwarmDocker提供本地集群。Docker Swarm 0.2.0版本的集群 提供了Docker Swarm 的基本介绍,以及如何创建一个简单的具有三节点的集群。作为复习,在这里展示一下Docker Swarm的关键组件:

简单来说,Swarm Manager是一个预先设置好的Docker主机,并且是所有管理的唯一一点。其他Docker主机被定义为节点,并使用TCP与Manager进行通信。默认情况下,Swarm会使用托管的 基于Docker Hub的Discovery Service,该服务会使用tokens来找到一个集群的部分节点。每个节点会运行一个Node Agent去注册被引用的Docker后台进程,并对其进行监视,并使用该节点的状态更新Discovery Service。这个容器会在一个节点上运行。

Arun Gupta的博客还提供了完整的细节,这里只展示了创建集群的概要:

#创建集群
TOKEN = 'docker run swarm create'
#创建Swarm主干
docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://$TOKEN swarm-master
#创建swarm节点01
docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN swarm-node-01
创建群集节点 02
docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN swarm-node-02

列出集群显示:

    NAME        ACTIVE        DRIVER        STATE                URL                    ]SWARM
swarm-master                virtualbox     Running    tcp://192.168.99.106:2376     swarm-master (master)
swarm-node-01               virtualbox     Running    tcp://192.168.99.107:2376     swarm-master
swarm-node-02     *         virtualbox     Running    tcp://192.168.99.108:2376     swarm-master

它有一个主干和两个节点。

将Java EE应用程序部署到Docker Swarm

集群中的所有主机都可以使用单个虚拟主机访问。Swarm提供标准的Docker API,因此任何与单个Docker主机进行通信的工具都可以通过与该虚拟主机进行通信扩展到多个Docker主机。

Docker Container Linking Across Multiple Hosts 解释了如何链接多个Docker主机上的容器。它将Java EE 7应用程序部署到一个Docker主机上的WildFly,并将其连接到运行一个在不同Docker主机上的MySQL数据库中。我们可以使用虚拟主机部署这两个容器,然后将它们部署到Docker Swarm集群中。

让我们开始吧!

Docker Swarm上的MySQL

  1. 启动MySQL容器:docker run –name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 3306:3306 -d mysql
  2. 容器的状态如下: docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 3306:3306 -d mysql
  3. 它显示容器正运行在 swarm-node-01上。确保你使用eval $(docker-machine env --swarm swarm-master)连接到该Docker Swarm集群 。
  4. 查找启动此容器的主机的IP地址: inspect --format '{{ .Node.Ip }}' $(docker ps -q --filter 'name=*mysqldb*') 192.168.99.107 ​

Docker Swarm上的WildFly

  • 通过传递主机的IP地址和运行MySQL服务器的端口来启动WildFly服务器:
  • 容器的状态如下:
~> docker ps
CONTAINER ID        IMAGE                                  COMMAND                CREATED             STATUS              PORTS                           NAMES
ab5717083812        arungupta/wildfly-mysql-javaee7:host   "/opt/jboss/wildfly/   25 minutes ago      Up 25 minutes       192.168.99.108:8080->8080/tcp   swarm-node-02/mywildfly   
b49d627a0431        mysql:latest                           "/entrypoint.sh mysq   34 minutes ago      Up 33 minutes       192.168.99.107:3306->3306/tcp   swarm-node-01/mysqldb

尽情使用吧!


本文首发于腾讯云+社区 原文链接:https://dzone.com/articles/deploying-java-ee-application-to-docker-swarm-clus 原文作者:Arun Gupta

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 选择排序法

    因为C中对数组的删除比较麻烦,所以我没有按照《算法图解》中的思路每次选择最小的元素,而是选择了最大的。

    李志伟
  • Java基础笔记整理---【05】switch分支语句、for循环语句

    1.顺序结构:按前后顺序执行的语句体 代码块内的程序都是顺序执行的 2.分支结构:选择执行一部分语句体 if(表达式){ } if(表达式){ ... ...

    李志伟
  • Java基础笔记整理---【01】cmd操作命令

    WIN+ R 输入 “cmd“,按下ENTER,打开cmd 部分命令操作: cd 切换目录 cd\ 回到根目录 cd 文件夹名称 打开文件夹 cd ....

    李志伟
  • 在SAP CRM WebClient UI中用javascript触发ABAP event

    需求:在WebClient UI里不通过用户手动点击,而是使用JavaScript代码自动触发ABAP后台的代码。

    Jerry Wang
  • Windows 平台 Docker Machine 使用 - 如何设置你的主机

    最近我一直在玩Docker。其中有许多原因,可以肯定的一点是:我喜欢玩最新的技术,甚至帮助构建一两个演示版或一个实验环境。我在Windows上运行我的设置,这是...

    weihhh
  • 3-1.在 Windows 系统中下载并安装 Docker-desktop

    Windows 的 Docker-desktop 是为在 Windows 10 上运行而设计的 Docker。

    角落的白板报
  • .Net Core微服务入门全纪录(八)——Docker Compose与容器网络

    上一篇【.Net Core微服务入门全纪录(七)——IdentityServer4-授权认证】中使用IdentityServer4完成了鉴权中心的搭建,配合网关...

    xhznl
  • 使用 Nexus OSS 为 Docker 镜像提供代理/缓存功能

    在企业环境中工作,无论是商业组织还是非商业组织,你会发现在互联网上获取信息存在着种种限制。

    LinuxSuRen
  • The Texas Tribune的Docker之旅

    本文是The Texas Tribune使用Docker的实战经验总结,概述了他们选择Docker的原因、问题和注意点,值得一看。 以下为原文: 我们The T...

    CSDN技术头条
  • 腾讯云上 Docker 的安装方式

    Docker 是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于 iOS 的 APP 形式的「应用」,这个应用可以直接被分发到任意一个支持 D...

    崔庆才

扫码关注云+社区

领取腾讯云代金券