适用于Java开发人员的Docker:在Docker上开发

本文是我们学院课程中名为《 面向Java开发人员的Docker教程 》的一部分。

在本课程中,我们提供了一系列教程,以便您可以开发自己的基于Docker的应用程序。 我们涵盖了广泛的主题,从通过命令行的Docker到开发,测试,部署和持续集成。 通过我们简单易懂的教程,您将能够在最短的时间内启动并运行自己的项目。 在这里查看 !

目录

1.简介 2.在您的IDE中使用Docker
2.1。 日食 2.2。 IntelliJ IDEA 2.3。 Oracle NetBeans
3.在边缘:Docker中的IDE 4.那么调试呢? 5.管理与监测
5.1。 烤盘 5.2。 顾问 5.3。 顶 5.4。 还有更多……
6. Docker Engine指标 7.结论 8.接下来

1.简介

在本教程的最后一部分中,我们学习了许多将Java应用程序打包(和运行)为Docker容器的方法。 在这一部分中,我们将更多地关注Docker如何以非常积极的方式影响我们的开发实践。

公平地讲, Docker在很多领域对开发人员都非常有帮助。 我们将重点讨论Docker与IDE的集成,将IDE作为Docker容器运行,并了解一些有用的工具来管理和监视Docker环境。

2.在您的IDE中使用Docker

到目前为止,我们已经看到Docker的命令行工具非常强大,其用法非常简单。 但是,我们大多数人(开发人员)大部分时间都花在了我们最喜欢的IDE中 。 在调试会话中途在数十个窗口和终端之间切换,同时在应用程序逻辑中寻找难以重现的错误,可能会适得其反。

幸运的是,所有三个领先的Java开发IDE (即Eclipse , JetBrains IntelliJ IDEA和NetBeans)都通过便捷的UI视图或小部件提供了与Docker工具的集成。 让我们快速浏览这些IDE中的每一个,并仔细研究它们所提供的功能。

日食

到目前为止, Eclipse Oxygen是Eclipse IDE的最新发布版本,它具有Linux Tools子项目(作为插件提供)提供的全面的Docker工具支持。 安装后,它将在Docker类别下提供四个其他视图。

适用于Java开发人员的Docker:在Docker上开发_第1张图片

Eclipse中的Docker视图

这些视图中的每一个都公开了有关Docker容器或映像的一些细节,而Docker Explorer是这两者的多合一视图。

适用于Java开发人员的Docker:在Docker上开发_第2张图片

Docker Explorer视图

如果您仅对Docker容器感兴趣,可以使用专用的Docker Containers视图,该视图使用紧凑的基于表的表示形式。

适用于Java开发人员的Docker:在Docker上开发_第3张图片

Docker容器视图

同样,如果您只想列出Docker映像,则专用的Docker Images视图就在这里,可以满足您的需求。

适用于Java开发人员的Docker:在Docker上开发_第4张图片

Docker映像视图

最后但并非最不重要的一点是,有一个非常有用的视图称为Docker Image Hierarchy 。 它允许查看已构建图像的所有图层。 例如,在这里,我们可以看到如何jcg/spring-boot-webapp:0.0.1-SNAPSHOT名称为jcg/spring-boot-webapp:0.0.1-SNAPSHOT的标记图像(我们在本教程的上一部分中构建的示例之一)。

适用于Java开发人员的Docker:在Docker上开发_第5张图片

Docker映像层次结构

但是这些观点只是整个故事的一部分。 另一部分是一组新的Docker启动器,您可以使用它们来构建Docker映像并以Docker容器的形式运行Java应用程序(甚至完整的Docker Compose堆栈)。

适用于Java开发人员的Docker:在Docker上开发_第6张图片

Eclipse启动器

如果您想了解更多关于上面讨论的所有视图和启动器的信息,以及一般而言,关于Eclipse中可用的Docker工具的更多信息 ,那么官方项目Wiki是一个很好的起点。

IntelliJ IDEA

JetBrains IntelliJ IDEA的最新版本为2017.2.6 ,以官方插件的形式提供Docker工具支持。 它在Ultimate EditionCommunity Edition都可用,我们将在本节中使用它。

安装插件后,新的Docker视图将可用,其中包含有关映像和容器的所有详细信息。

适用于Java开发人员的Docker:在Docker上开发_第7张图片

IntelliJ Idea中的Docker

公平地讲,使用一个单一的,结构良好的视图并在附近(在不同的选项卡中)可用的大多数必需部件非常方便。

Oracle NetBeans

自从最新的8.2版本发布以来, NetBeans在Base IDE插件中包含了Docker工具(您很可能一开始就将其激活)。 插件激活后,附加的Docker树节点将在“ Services视图中可用。

适用于Java开发人员的Docker:在Docker上开发_第8张图片

Netbeans中的Docker

关于NetBeans中 Docker集成所需功能的相当不错的摘要和讨论已在官方社区Wiki上发布 。 如果您对此主题感到好奇或感兴趣,请检查一下。

3.在边缘:Docker中的IDE

如我们所见,大多数流行的Java开发IDE所提供的Docker工具已经足够了,甚至可以说是杰出的。 但是,如果我们试图突破极限并在几乎任何地方都可以在Docker中完全运行IDE呢? 如果听起来有点疯狂,那肯定可以,但是…

蚀澈 ,下一代IDE从蚀 ,是在充分的程度杠杆集装箱化和运行完全上泊坞 。 在后台,它由REST(ful)Web API提供支持,并提供功能丰富的基于浏览器的IDE 。

适用于Java开发人员的Docker:在Docker上开发_第9张图片

日蚀车

这是一个非常有创意的年轻项目,具有极大的潜力,可以改变我们所知道的IDE的概念。 看到未来情况将如何发展将是非常有趣的,但是该技术已经可以评估。

4.那么调试呢?

调试过去,现在并且很可能将在发现,理解和解决程序中的缺陷或问题方面发挥关键作用。 而且,不管喜欢与否,无论Docker多么出色 ,它都无法使我们的应用程序摆脱漏洞。 如果您将Java应用程序作为Docker容器运行,则调试过程会有所改变, 这本出色的文章中对此进行了详细说明。 它是如此全面,以至于无需在这里重复,只需选择您使用的IDE并阅读为您准备的精美教程。

5.管理与监测

尽管Docker命令行工具以及Docker Engine API可以让您完成可能遇到的任何任务,但我们许多人仍然更喜欢处理某种Web或图形UI。 显然,这是个人喜好,在本节中,我们将学习有关这方面的许多有趣的选择。

烤盘

我们要看的第一个工具是Portainer ,这是一个开放源代码的轻量级管理UI,可以轻松管理不同的Docker环境(例如Docker主机或Docker Swarm集群)。 Portainer本身作为轻量级Docker容器运行也就不足为奇了。 让我们运行一个:

$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

在Windows计算机上,命令看起来有些不同:

$ docker run -d -p 9000:9000 portainer/portainer

Portainer容器启动并运行后,您将可以通过位于http:// localhost:9000的漂亮简洁的Web UI对其进行访问(或者,如果您使用的是非本地Docker安装,则可以使用http://:9000 )。

适用于Java开发人员的Docker:在Docker上开发_第10张图片

烤盘仪表板

设置步骤完成后(如有必要),从简单的仪表板页面开始,您将导航到所讨论的Docker环境的多合一视图。 您肯定会识别出左侧列出的所有Docker对象(例如卷,网络,容器,图像等),因此您可以选择其中的任意一个以将其重定向到专用视图。

Portainer通过直观的Web界面公开的受支持的Docker功能列表令人惊讶。 如果您更喜欢UI工具而不是命令行工具, 那么Portainer可以为您提供一站式服务。

顾问

通常,在开发应用程序时,有必要获得关于容器正在发生的事情的更多见解,无论是谈论CPU,内存还是网络利用率。 幸运的是,这里有很多选择,我们将要讨论的非常有用的工具之一是cAdvisor (或完整版的容器顾问),它分析正在运行的容器的资源使用情况和性能特征。

cAdvisor 使容器用户了解其运行中的容器的资源使用情况和性能特征。 它是一个正在运行的守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。 具体来说,对于每个容器,它保留资源隔离参数,历史资源使用情况,完整历史资源使用情况的直方图和网络统计信息。 此数据按容器和机器范围导出。 ” – https://github.com/google/cadvisor

有趣的是, cAdvisor不仅限于Docker ,还应支持几乎所有其他类型的容器。 对于Windows用户,可悲的是, cAdvisor在此平台上的支持有限 。 当然,尝试cAdvisor的最佳方法是将其作为Docker容器运行。

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

容器启动并运行后,您可以通过http:// localhost:8080访问cAdvisor Web UI(或者,如果您使用的是非本地Docker安装,则可以访问http://:8080 )。

适用于Java开发人员的Docker:在Docker上开发_第11张图片

顾问

Web UI非常简单,但信息量非常丰富。 收集了许多有关每个正在运行的Docker容器的资源和进程以及Docker主机本身(CPU,内存,网络,存储等)的详细信息。 无论如何,它是了解您的容器在运行时如何消耗和管理资源的宝贵工具。

最后但并非最不重要的一点是,我们将使用ctop工具进行总结, 该工具在一个类似top的界面中,为多个容器的实时指标提供了简洁明了的概述。

适用于Java开发人员的Docker:在Docker上开发_第12张图片

ctop不仅具有摘要视图,而且还支持选择并集中于任何单个容器的选项。

还有更多……

Docker工具领域确实蓬勃发展,每天都有新的有趣项目涌现。 我们刚刚介绍了几个著名的,成熟的和有用的工具,但是还有很多发现的地方,因此,如果您有兴趣,请仔细观察此空间。

6. Docker Engine指标

Docker引擎以与Prometheus完全兼容的格式公开了许多有趣的指标, Prometheus是非常流行的开源监视和警报解决方案。 尽管此功能在很早以前就已普遍可用,但了解它的人并不多,因此,很少有人使用它。

该功能仍被认为是实验性功能,因此默认情况下不可用,需要进行一些配置调整。 官方文档彻底描述了要在运行Docker的操作系统上执行的所有必要步骤。 但实际上,第一步是修改daemon.json并在其中添加以下属性。

{
  "metrics-addr" : "localhost:9323",
  "experimental" : true
}

为了使此更改生效,应重新启动Docker守护程序。 此后,指标应在http:// localhost:9323 / metrics端点上可用。 下一步是准备Prometheus配置prometheus.yml ,以便抓取Docker引擎指标。

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'docker'
    static_configs:
      - targets: ['localhost:9323']

有了这个最小的配置,我们可以将Prometheus服务器(在撰写本文时已达到2.0版)作为Docker容器启动:

docker run -p 9090:9090 \
    -v prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/Prometheus

启动容器后, Prometheus Web UI应可从http:// localhost:9090获得 。 让我们导航到该URL并检查是否可以访问我们配置的所有目标。

适用于Java开发人员的Docker:在Docker上开发_第13张图片

普罗米修斯目标

坦白地说, Prometheus Web UI能够绘制不同的指标,但是另一个开源项目Grafana是用于查询,可视化,警告和了解指标的最新平台。

docker run -d -p 3000:3000 \
    -e "GF_SECURITY_ADMIN_PASSWORD=pa$$w0rd" \
    grafana/grafana

Grafana拥有大量的预建仪表板,其中之一,就是Docker Engine Metrics仪表板,正是我们想要的。 这是有关它如何显示的偷窥(确实很漂亮)。

适用于Java开发人员的Docker:在Docker上开发_第14张图片

Grafana Docker引擎仪表板

乍一看,它看起来可能没有什么意义,但是您可以自由地修改它,甚至可以自己构建,只选择您感兴趣的Docker引擎指标。

7.结论

在本教程的这一部分中,我们讨论了开发人员的好朋友IDE怎样通过提供广泛的Docker工具和支持来与时俱进。 除此之外,我们还提到了一些非常有用的工具,用于管理和监视容器以及Docker引擎本身。

8.接下来

在本教程的下一部分中,我们将讨论使用Docker进行测试,尤其是在对Java应用程序进行集成和端到端测试的情况下。

翻译自: https://www.javacodegeeks.com/2017/12/docker-java-developers-develop-docker.html

你可能感兴趣的:(大数据,编程语言,python,linux,java)