关键词:
前言
Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿。
本篇仅作探索,希望对大家有所帮助。
目录
-
Java
-
官方镜像
-
各语言镜像比较
-
使用Docker搭建Java开发环境
-
编写Hello world!
-
编写Dockerfile
-
构建镜像并执行
Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
目前最新的版本为Java 9,以下为官方文档地址:
https://docs.oracle.com/javase/9/
注意:值得注意的是,Oracle (甲骨文)公司宣布,“2019年1月之后”,如果没有获得Oracel公司的商业许可证,Java SE 8(注:Java SE为Java平台标准版的简称)将不会再收到公开更新,也将无法用于“商业或生产用途”。目前收费标准为,对于 PC,每用户每月是 2.5 美元,对于服务器/云部署,每个处理器每月是 25 美元。
官方镜像
Java官网镜像地址为:
官方介绍无。在Java社区,对Docker的拥抱粒度相对其他语言不是很大,不仅教程相对缺失,而且官方支持力度不大。这一点,大家可以通过搜索引擎进一步了解。不过,还是有许多Java开发者也在拥抱Docker。
各语言镜像比较
写到这里,笔者突发奇想,相对主流的镜像做一个体积比较。
我们可以通过docker images命令来列出本地镜像,同时可以使用参数来进行筛选。
- Java
我们可以使用以下命令来查看Java相关镜像的大小:
600M左右的体积,相对来说,还是臃肿。我们可以和其他镜像做一些对比:
- NET Core
docker images microsoft/dotnet
运行时镜像200M左右,而且高版本镜像越来越轻量。
- Python
docker images python
- Php
docker images php
使用Docker搭建Java开发环境
本篇仅做探索,主要解决以下问题:
- 无需搭建Java开发环境
- 开发环境变化只需更新镜像即可(比如从Java8改为Java9)
- 无需安装IDE(比如eclipse)
- 提供一个极简Demo
编写Hello world!
按照码农协会行业定律,初学必写Hello World,以表达对编程世界的敬仰之情。如下面代码所示:
//引入命名空间 import java.util.*; //类 public class Hello //程序入口 public static void main(String[] args) //打印字符串(控制台) System.out.println("Hello World!"); //打印当前时间 System.out.println(new Date());
这里顺便说下,我们使用万能编辑器VisualStudio Code来编辑上述代码,支持代码高亮,同时还会自动推荐相关扩展,如下所示:
并且还提供完善的文档教程:
编写Dockerfile
如下所示,示例Dockerfile文件如下:
# 基于Java 9 FROM java:9 # 设置工作目录 WORKDIR /app # 复制文件到工作目录 COPY . /app # 设置Java环境变量 ENV PATH=$PATH:$JAVA_HOME/bin ENV JRE_HOME=$JAVA_HOME/jre ENV CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib # 编译 RUN ["/usr/lib/jvm/java-9-openjdk-amd64/bin/javac","Hello.java"] # 运行 ENTRYPOINT ["/usr/lib/jvm/java-9-openjdk-amd64/bin/java", "Hello"]
构建镜像并执行
接下来,我们可以执行以下命令以构建Docker镜像:
docker build --rm -f "Dockerfile" -t java-hello:latest .
构建成功后,我们跑起来看效果:
docker run java-hello:latest
作者:雪雁
出处:http://www.cnblogs.com/codelove/
docker最全教程——从理论到实战
往期内容链接https://www.cnblogs.com/codelove/p/10030439.htmlhttps://www.cnblogs.com/codelove/p/10036608.htmlhttps://www.cnblogs.com/codelove/p/10056866.html 在笔者参加腾讯容器服务技术交流会时,我们了解到了藏区牧民的目前的生活艰辛状况,因此除了在 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(七)在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、... 查看详情
docker最全教程——从理论到实战(十七)(代码片段)
...ore推送钉钉消息获取参数设置消息数据格式发送请求设置Dockerfile运行并设置环境变量推送消息 使用.NETCore推送钉钉消息这里我们使用.NETCore来完成相关需求,注意,这里是.NETCore,而不是ASP.NETCore。需求和上面类似,工程相关... 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(八)在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、... 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(二)上篇内容链接:https://www.cnblogs.com/codelove/p/10030439.htmlDocker和ASP.NETCoreDocker正在逐渐成为容器行业的事实标准,受到Windows和Linux生态系统领域最重要供应商的支持。(Microsoft是支持Docker的... 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(三)往期链接:https://www.cnblogs.com/codelove/p/10030439.htmlhttps://www.cnblogs.com/codelove/p/10036608.html 写在前面容器是应用走向云端之后必然的发展趋势,因此笔者非常乐于和大家分享我们这... 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(六)托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。 自建还是托管?在开始之前,我们... 查看详情
docker最全教程——从理论到实战
原文:Docker最全教程——从理论到实战(四)往期内容链接https://www.cnblogs.com/codelove/p/10030439.htmlhttps://www.cnblogs.com/codelove/p/10036608.htmlhttps://www.cnblogs.com/codelove/p/10056866.html 在笔者参加腾讯容器服务技术交流会时,我们了解到了... 查看详情
docker最全教程——从理论到实战
...出品的DevOps服务。主要提供多存储格式的版本管理,支持DockerImage、Binary、HelmCharts 等多种类型文件。同时提供 DevOps 工作流的编排引擎,并且支持编排 DevOps 工作流,以打造更强的持续集成与持续交付力,加快... 查看详情
docker最全教程——从理论到实战
在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实... 查看详情
docker最全教程——从理论到实战(十八)
...是确实是非常犀利。通过本篇,老司机带你使用VSCode玩转Docker——相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是“工欲善其事必先利其器”,VSCode,你值得拥有!目录⊙使用Visua... 查看详情
docker最全教程——从理论到实战
Docker和持续集成(CI) 什么是持续集成?我们先得了解持续集成的相关概念,才能更好地指导开发和使用Docker来改进我们的工作流。和其他教程不一样,笔者更喜欢将必要的知识点围绕理论、流程(工作流程)、方法、实践... 查看详情
docker最全教程——从理论到实战
托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。 自建还是托管?在开始之前,我们先来讨论一个问题——是自建容器服务... 查看详情
docker最全教程——从理论到实战
...,应用很广。本篇主要讲述Ubuntu下使用SSH远程登录并安装Docker,并且提供了Docker安装的两种方式,希望对大家有所帮助。拥抱Linux,大家可以从Ubuntu开始! Ubuntu下安装Docker首先我们需要准备一个Ubuntu的环境。这里笔者推... 查看详情
docker最全教程——从理论到实战
使用Azure DevOps来完成CIAzureDevOps,以前叫VSTS,现在被微软改名部正式更名为Azure DevOps,说明微软云为先之心仍然蠢蠢欲动。不过和VSTS一样,微软都提供了免费的使用额度,对于小团队和个人开发者来说,完全是足够了。&n... 查看详情
docker最全教程——从理论到实战(十四)
本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置。教程中也分享了一个简单的CI、CD流程,仅作探讨。不过由于篇幅有限,完整的DevOps,我们后续独立探讨。 为了降低容器的使用门槛以及... 查看详情
docker最全教程——从理论到实战(十三)
...,支持Linux的IoT设备越来越多,比如本文中的树莓派。而Docker,在物联网这块,也提供了一个优秀的解决方案。一方面,真正做到了一次编译,到处运行(包括各种loT设备),而且还很轻量,另一方面,镜像的差异化更新可以减... 查看详情
docker最全教程——从理论到实战
前言容器教程的路还很长,笔者尽量根据实践来不断地完善。由于在编写的过程中还会有完善和补充,后续可能会以番外来补充。接下来会分享TeamCity、树莓派等内容,节奏可能会有点跳脱。另外,长沙.NET社区已经初步成立,有... 查看详情