制作鏡像與配置推送阿里云倉庫

一、制作jdk鏡像

1.1、Alpine linux簡介

Alpine Linux是一個輕量級的Linux發行版,專注于安全、簡潔和高效。它采用了musl libc和BusyBox,使得系統資源占用較少,啟動速度較快。

Alpine Linux也提供了一個簡單的包管理工具APK,(注意:ubuntu中是apt-get),我們可以通過https://pkgs.alpinelinux.org/packages 查詢包信息,可以方便地安裝、升級和管理軟件包。由于其輕量級和高安全性,Alpine Linux常被用于容器化應用和嵌入式系統中

Alpine Docker鏡像繼承了Alpine Linux發行版的這些優勢,相比于其他Linux Docker鏡像,它的體積非常小

???? 對比常用的、沒有壓縮過的基礎鏡像(查看當前的:latest標簽):

???? Alpine - 4.8MB

???? centos - 124.8 MB? ? ? ? ? ? ? ? ?之前200MB

???? Debian - 125.1MB

???? Centos - 196MB

?? 4.建議使用Alpine Linux 3.10.0版本,這也是 v3.10 穩定系列的首個版本

???? alpine:3.10

1.2、基于alpine制作JDK8鏡像

原因:

1. Alpine是一個輕量級的Linux發行版,它的基礎鏡像大小很小,因此構建的鏡像也會更加輕量化,節省存儲空間和網絡帶寬。

2. Alpine使用了musl libc代替了glibc,這樣可以減少一些依賴和提高性能,尤其是在容器環境下。

3. Alpine采用了最小化的設計原則,只包含最基本的軟件包,因此更加安全,減少了潛在的安全風險。

4. Alpine的包管理工具apk相對于CentOS的yum更加簡潔和高效,構建鏡像的過程會更加快速。

不基于centos,而基于alpine,可以帶來更好的性能、安全性和效率。

1.3、具體操作v2.0

?? 下載鏡像

?docker pull alpine:latest

?? 創建并編輯dockerfile

#進到data目錄
cd /home/sha/data/#創建文件夾
vim? myjdkDockerfile1

復制的內容

#1.指定基礎鏡像,并且必須是第一條指令

FROM alpine:latest

#FROM alpine:3.10

#2.指明該鏡像的作者和其電子郵件

MAINTAINER xyz "sha@qq.com"

#3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會創建目錄

WORKDIR /sha_docker/jdk

#4.將一些安裝包復制到鏡像中,語法:ADD/COPY <src>... <dest>

## ADD與COPY的區別:ADD復制并解壓,COPY僅復制

ADD jdk-8u221-linux-x64.tar.gz /sha_docker/jdk/

## glibc安裝包如果從網絡下載速度實在是太慢了,先提前下載復制到鏡像中

COPY glibc-2.29-r0.apk /sha_docker/jdk/

COPY glibc-bin-2.29-r0.apk /sha_docker/jdk/

COPY glibc-i18n-2.29-r0.apk /sha_docker/jdk/

#5.更新Alpine的軟件源為阿里云,因為從默認官源拉取實在太慢了

RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \

??? echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories

RUN apk update && apk upgrade

#6.運行指定的命令

## Alpine linux為了精簡本身并沒有安裝太多的常用軟件,apk類似于ubuntu的apt-get,

## 用來安裝一些常用軟V件,其語法如下:apk add bash wget curl git make vim docker

## wget是linux下的ftp/http傳輸工具,沒安裝會報錯“/bin/sh:   wget: not found”,網上例子少安裝wget

## ca-certificates證書服務,是安裝glibc前置依賴

RUN apk --no-cache add ca-certificates wget \

??? && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \

??? && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \

??? && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk

#7.配置環境變量

ENV JAVA_HOME=/sha_docker/jdk/jdk1.8.0_221

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH=$JAVA_HOME/bin:$PATH

#容器啟動時需要執行的命令

#CMD ["java","-version"]

粘貼后不能亂碼

上傳文件

制作鏡像

?docker build -f myjdkDockerfile1 -t jdk8:v2.0 .

測試

 docker run -it --name mj1 +容器ID(docker images查出來 第三列就是)

1.4、具體操作v3.0

編譯環境(寫代碼)的是class文件,運行文件是jre

?? 1.首先下載jre或者上傳

下載地址是https://www.java.com/en/download/manual.jsp,大概是77M

??? 最終下載的資料為:/jre-8u221-linux-x64.tar.gz

?? 解壓

????? tar -zxvf jre-8u221-linux-x64.tar.gz

????? #查看jre大小(瘦身前230M)

????? du -sh jre1.8.0_221

????? #進入jre目錄,并執行瘦身命令

????? cd jre1.8.0_221

????? #執行瘦身命令(命令見資料,瘦身后111M)

\換行|隔行運行命令

#刪除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.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

測試

返回上級,再次測試du -sh jre1.8.0_221大小

???????? ?

????? 返回上級目錄,重新打包jre

???

???

#返回上一級
cd ../#刪除之前220M的
rm -rf jre-8u221-linux-x64.tar.gz#打成壓縮包
tar -zcvf jre1.8.0_221.tar.gz jre1.8.0_221

創建并編輯dockerfile

vim myjdkdockerfile1

????? 注1:dockerfile內容如下

#1.指定基礎鏡像,并且必須是第一條指令

FROM alpine:latest

#FROM alpine:3.10

#2.指明該鏡像的作者和其電子郵件

MAINTAINER xyz "xyz@qq.com"

#3.在構建鏡像時,指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會創建目錄

WORKDIR /javaxl_docker/jdk

#4.將一些安裝包復制到鏡像中,語法:ADD/COPY <src>... <dest>

## ADD與COPY的區別:ADD復制并解壓,COPY僅復制

## 注意~~~上傳的瘦身后的jre

ADD jre1.8.0_221.tar.gz /javaxl_docker/jdk/

## glibc安裝包如果從網絡下載速度實在是太慢了,先提前下載復制到鏡像中

COPY glibc-2.29-r0.apk /javaxl_docker/jdk/

COPY glibc-bin-2.29-r0.apk /javaxl_docker/jdk/

COPY glibc-i18n-2.29-r0.apk /javaxl_docker/jdk/

#5.更新Alpine的軟件源為阿里云,因為從默認官源拉取實在太慢了

RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \

??? echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories

RUN apk update && apk upgrade

#6.運行指定的命令

## Alpine linux為了精簡本身并沒有安裝太多的常用軟件,apk類似于ubuntu的apt-get,

## 用來安裝一些常用軟V件,其語法如下:apk add bash wget curl git make vim docker

## wget是linux下的ftp/http傳輸工具,沒安裝會報錯“/bin/sh:   wget: not found”,網上例子少安裝wget

## ca-certificates證書服務,是安裝glibc前置依賴

RUN apk --no-cache add ca-certificates wget \

??? && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \

??? && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \

??? && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk

#7.配置環境變量

## 注意~~~沒有jdk啦,直接指向jre

ENV JAVA_HOME=/javaxl_docker/jdk/jre1.8.0_221

ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH=$JAVA_HOME/bin:$PATH

#容器啟動時需要執行的命令

#CMD ["java","-version"]

?執行dockerfile創建鏡像

docker build -t myjdkdockerfile2?-t jdk8:v3.0 .

測試

查看(里面有id)
docker imagesdocker run -it --name mj2 容器iDjava -version

?? 注1:openjdk:8-jdk-alpine這個鏡像就和我們自己創建的鏡像是一樣,只不過JDK瘦身過了,體積更小。

??????? 另外,openjdk和jdk也是有一定區別的,大家可以看下資料“14 OpenJDK與JDK的區別分析 - 簡書.mht”了解一下

?? 注2:Alpine制作JDK8鏡像是有時區問題的,可以使用時區查看命令看一下

????

二、配置阿里云鏡像倉庫

2.1、Docker鏡像上傳至阿里云

容器鏡像服務 (aliyun.com)

認證一下

退出去再次按照之前那樣進入

2.2、推送阿里云

復制這個去瀏覽器

復制令牌

綁定成功就代表成功了

回答上傳阿里再次開始

發現Godeup有選擇了

復制它去登錄,注意不用把$它也復制上去,否則報錯

登錄

輸入密碼后要等一會

忘記密碼可以點擊菜單:“容器鏡像服務”->“默認實例”-->“訪問憑證”進行修改

?? docker login --username=javaxl registry.cn-shenzhen.aliyuncs.com

上傳

#查看(可以看到容器id)
docker images#打標
docker tag 容器id registry.cn-shenzhen.aliyuncs.com/javaxl/alpine_jre:[鏡像版本號]#上傳
docker push registry.cn-shenzhen.aliyuncs.com/javaxl/alpine_jre:[鏡像版本號]

?

檢查成功

下拉

假設換了服務器,所有要刪除本地的

#刪除,刪除失敗用下面的
dockker rmi -f 容器端口號#查看
docker ps#
docker rm -f mj2docker rmi -f 容器端口號

?? 從Registry中拉取鏡像

?? docker pull registry.cn-shenzhen.aliyuncs.com/javaxl/alpine_jre:[鏡像版本號]

測試運行

#
docker images#mj3 取一個名字
docker run -it --name mj3 容器idjava -version

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716342.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716342.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716342.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【計算機網絡_應用層】協議定制序列化反序列化

文章目錄 1. TCP協議的通信流程2. 應用層協議定制3. 通過“網絡計算器”的實現來實現應用層協議定制和序列化3.1 protocol3.2 序列化和反序列化3.2.1 手寫序列化和反序列化3.2.2 使用Json庫 3.3 數據包讀取3.4 服務端設計3.5 最后的源代碼和運行結果 1. TCP協議的通信流程 在之…

深入分析Android運行時環境ART:原理、特點與優化策略

摘要 隨著移動互聯網的快速發展&#xff0c;智能手機的性能和功能日益強大&#xff0c;其中Android操作系統因其開放性和靈活性而占據主導地位。Android運行時環境&#xff08;ART&#xff09;作為執行應用程序代碼的關鍵組件&#xff0c;在系統性能和用戶體驗方面起著至關重要…

Vue+SpringBoot打造高校學生管理系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 學生管理模塊2.2 學院課程模塊2.3 學生選課模塊2.4 成績管理模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 學生表3.2.2 學院課程表3.2.3 學生選課表3.2.4 學生成績表 四、系統展示五、核心代碼5.1 查詢課程5.2 新…

DFS剪枝

剪枝 將搜索過程中一些不必要的部分剔除掉&#xff0c;因為搜索過程構成了一棵樹&#xff0c;剔除不必要的部分&#xff0c;就像是在樹上將樹枝剪掉&#xff0c;故名剪枝。 剪枝是回溯法中的一種重要優化手段&#xff0c;方法往往先寫一個暴力搜索&#xff0c;然后找到某些特…

超詳細紅黑樹的模擬實現

前言 有人說設計出AVL樹的的人是個大牛&#xff0c;那寫紅黑樹&#xff08;RBTree&#xff09;的人就是天才&#xff01; 上一篇文章&#xff0c;我們已經學習了AVL樹&#xff0c;牛牛個人認為AVL樹已經夠優秀了&#xff0c;那讓我們一起探究一下&#xff0c;為什么紅黑樹比AV…

鏈表類型題目

文章目錄 簡介鏈表的常用技巧兩數相加原理代碼代碼|| 兩兩交換鏈表中的節點代碼原理 重排鏈表(重要)原理代碼 合并 K 個升序鏈表代碼遞歸代碼 K 個一組翻轉鏈表原理代碼 簡介 大家好,這里是jiantaoyab,這篇文章給大家帶來的是鏈表相關的題目練習和解析,希望大家能相互討論進步 …

[線代]自用大綱

部分內容整理自張宇和網絡 序 題型分布&#xff1a; 題型單題分值題目數量總分值選擇題5315填空題515解答題12112 *一道大題可能用到六部分所有知識 矩陣 性質 k k k倍和乘積行列式 ∣ k A ∣ k n ∣ A ∣ |kA|k^n|A| ∣kA∣kn∣A∣ ∣ A B ∣ ≠ ∣ A ∣ ∣ B ∣ |AB|≠…

DDE圖像增強

DDE&#xff08;Detail and Darkness Enhancement&#xff0c;細節和暗部增強&#xff09;是一種用于增強圖像細節和暗部區域的方法。其原理可以簡要概括如下&#xff1a; 細節增強&#xff1a;在圖像中突出顯示細節信息&#xff0c;使得圖像更加清晰和具有視覺沖擊力。這可以通…

藍橋杯刷題--python-15-二分(進階)

503. 借教室 - AcWing題庫 n,mmap(int,input().split()) class_list(map(int,input().split())) class_[0]class_ d[0] s[0] t[0] for _ in range(m): dj,sj,tjmap(int,input().split()) d.append(dj) s.append(sj) t.append(tj) def check(k): b[0]*(n2) …

如何解決微服務的數據一致性分發問題?

介紹 系統架構微服務化以后,根據微服務獨立數據源的思想,每個微服務一般具有各自獨立的數據源,但是不同微服務之間難免需要通過數據分發來共享一些數據,這個就是微服務的數據分發問題。Netflix/Airbnb等一線互聯網公司的實踐[參考附錄1/2/3]表明,數據一致性分發能力,是構…

在嵌入式設備中用多項式快速計算三角函數和方根

慣性傳感器的傾角計算要用到三角函數. 在 MCS-51, Cortex M0, M3 之類的芯片上編程時, 能使用的資源是非常有限, 通常只有兩位數KB的Flash, 個位數KB的RAM. 如果要使用三角函數和開方就要引入 math.h, 會消耗掉10KB以上的Flash空間. 在很多情況下受硬件資源限制無法使用 math.…

【 10X summary report】怎么看?詳細解讀筆記

報告內容 在開始正式的分析之前&#xff0c;需要查看在對齊和計數過程中生成的任何總結統計信息。下圖是由Cell Ranger工具創建的10X總結報告&#xff0c;在從10X scRNA-seq實驗生成計數矩陣時會生成。 The left half of the report describes sequencing and mapping statist…

賣wordpress網站模板的網站

WP模板牛 http://www.wpniu.com 上面有很多免費wordpress模板資源的網站&#xff0c;除了免費模板&#xff0c;還有付費模板。 My模板(我的模板) http://www.mymoban.com 老牌網站模板資源站&#xff0c;上面有wordpress模板、帝國CMS模板、WooCommerce模板可以直接免費下載…

Linux whois命令教程:查詢域名所有者信息(附案例詳解和注意事項)

Linux whois命令介紹 whois命令是一個用于查詢域名所有者信息的工具。它可以直接從命令行進行查詢&#xff0c;這對于沒有圖形用戶界面的系統或者需要在shell腳本中進行查詢的情況非常有用。 Linux whois命令適用的Linux版本 whois命令在大多數Linux發行版中都可以使用&…

C++之stack

1、stack簡介 stack是實現的一個先進后出&#xff0c;后進先出的容器。它只有一個出口&#xff0c;只能操作最頂端元素。 2、stack庫函數 &#xff08;1&#xff09;push() //向棧壓入一個元素 &#xff08;2&#xff09;pop() //移除棧頂元素 &#xff08;3…

基于springboot+vue的中國陜西民俗網

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

在 Angular 中使用 Renderer2

Renderer2 類 Renderer2 類是 Angular 提供的一個抽象服務&#xff0c;允許在不直接操作 DOM 的情況下操縱應用程序的元素。這是推薦的方法&#xff0c;因為它使得更容易開發可以在沒有 DOM 訪問權限的環境中渲染的應用程序&#xff0c;比如在服務器上、在 Web Worker 中或在原…

Java如何剪切視頻

背景&#xff1a;如何使用Java批量切割視頻 FFmpeg 是一個強大的開源多媒體處理工具&#xff0c;被廣泛應用于音視頻的錄制、轉碼、編輯等方面。它支持幾乎所有主流的音視頻格式&#xff0c;能夠在各種操作系統平臺上運行&#xff0c;包括 Windows、macOS 和 Linux。FFmpeg 提…

nginx,php-fpm

一&#xff0c;Nginx是異步非阻塞多進程&#xff0c;io多路復用 1、master進程&#xff1a;管理進程 master進程主要用來管理worker進程&#xff0c;具體包括如下4個主要功能&#xff1a; &#xff08;1&#xff09;接收來自外界的信號。 &#xff08;2&#xff09;向各worker進…

SAP PP學習筆記04 - BOM2 -通過Serial來做簡單的BOM變式配置,副明細,BOM狀態,BOM明細狀態,項目種類,遞歸BOM

本章繼續講BOM。 本章講通過Serial來做簡單的BOM變式配置。還講了BOM的相關概念&#xff1a;副明細&#xff0c;BOM狀態&#xff0c;BOM明細狀態&#xff0c;項目種類&#xff0c;遞歸BOM 等。 1&#xff0c;通過Serial&#xff08;序列號&#xff09;來做簡單的 VC&#xff0…