前言
Java是一門面向對象的優秀編程語言,市場佔有率極高,可是在容器化實踐過程當中,發現官方支持並不友好,同時與其餘編程語言的基礎鏡像相比(具體見各語言鏡像比較),確實是很是臃腫。php
本篇僅做探索,但願對你們有所幫助。java
Javapython
官方鏡像程序員
各語言鏡像比較docker
使用Docker搭建Java開發環境編程
編寫Hello world!安全
編寫Dockerfile服務器
構建鏡像並執行多線程
Java是一門面向對象編程語言,不只吸取了C++語言的各類優勢,還摒棄了C++裏難以理解的多繼承、指針等概念,所以Java語言具備功能強大和簡單易用兩個特徵。Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程。oracle
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相關鏡像的大小:
600M左右的體積,相對來講,仍是臃腫。咱們能夠和其餘鏡像作一些對比:
docker images microsoft/dotnet
運行時鏡像200M左右,並且高版本鏡像愈來愈輕量。
docker images python
docker images php
本篇僅作探索,主要解決如下問題:
按照碼農協會行業定律,初學必寫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文件以下:
# 基於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