使用JRE8構建Java8基礎鏡像

首先說說爲何要進行鏡像壓縮,docker鏡像內部分層結構,致使某些層上面的依賴多餘,在某種特定場景下這些依賴其實並不會用到,所以,針對特定場景,咱們能夠將這些多餘的依賴進行刪除,縮小鏡像體積節省資源。html

1、JRE下載

JRE官方下載網站爲:官方下載java

下載時請注意你所用的機器的系統以及位數,不要在32位機器上安裝了64位的包,那就尷尬了老鐵。linux

下載完成以後大概就長下面這個樣子:docker

咱們重點看下Dockerfile1jre-8u221-linux-x64.tar.gz兩個文件便可~bash

2、解壓縮並刪除相關沒用的依賴

解壓縮剛剛下載的包,使用下面命令jsp

tar -zxvf jre-8u221-linux-x64.tar.gz
cd jre1.8.0_221/
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html
rm -rf     lib/plugin.jar \
           lib/ext/jfxrt.jar \
           bin/javaws \
           lib/javaws.jar \
           lib/desktop \
           plugin \
           lib/deploy* \
           lib/*javafx* \
           lib/*jfx* \
           lib/amd64/libdecora_sse.so \
           lib/amd64/libprism_*.so \
           lib/amd64/libfxplugins.so \
           lib/amd64/libglass.so \
           lib/amd64/libgstreamer-lite.so \
           lib/amd64/libjavafx*.so \
           lib/amd64/libjfx*.so

tar zcvf jdk8.tar.gz *

mv jdk8.tar.gz  ..

cd ..

ll
複製代碼

執行完以後大概就以下圖,咱們從新打包生成了一個jre8文件叫jdk8.tar.gz,注意這裏解壓出來以後是沒有目錄的,在編寫下邊的Dockerfile文件時要特別注意。微服務

3、編寫Dockerfile文件並構建

接下來咱們根據咱們生成的jdk8.tar.gz文件構建出一個jdk8鏡像,編寫Dockerfile文件以下:測試

# using alpine-glibc instead of alpine is mainly because JDK relies on glibc
FROM docker.io/jeanblanchard/alpine-glibc
# 維護者信息
MAINTAINER hjw <v:lifvalue>
# ADD指令:拷貝文件並解壓 COPY指令:拷貝文件
ADD jdk8.tar.gz /usr/local/software/
# 設置相關java環境變量
ENV JAVA_HOME /usr/local/software
ENV PATH ${PATH}:${JAVA_HOME}/bin
# 這個指令表示,咱們運行容器時,容器默認的工做目錄
WORKDIR /opt
複製代碼

注意,這個Dockerfile文件最後不要增長ENTRYPOINY指令,加上以後可能會有xxxxxx directory的坑。網站

下邊咱們構建咱們本身的jdk8鏡像。ui

docker build -f Dockerfile1 -t xxx/jdk8 .
複製代碼

構建完成以後,會用docker images能夠查看咱們剛剛生成的鏡像,以下:

4、測試鏡像

執行下面命令啓動一個容器,看看java環境變量是否生效:

docker run -it 3015

3015爲鏡像ID的前4位,最後使用exit退出容器。

5、如何在微服務中使用?

在服務中使用很簡單,只須要在FROM指令中引入便可,以下:

FROM xxx/jdk8
複製代碼
相關文章
相關標籤/搜索