欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)超詳細(xì)攻略

 更新時(shí)間:2024年08月23日 10:45:43   作者:默o。  
Docker倉(cāng)庫(kù)是集中存放鏡像的地方,分為公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù),這篇文章主要給大家介紹了關(guān)于Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

隨著容器技術(shù)的日益成熟,Docker已經(jīng)成為現(xiàn)代軟件開(kāi)發(fā)和部署的標(biāo)配工具。其中,自定義Docker鏡像是滿足特定項(xiàng)目需求的關(guān)鍵步驟。特別是在Java開(kāi)發(fā)環(huán)境中,我們可能需要為不同的項(xiàng)目配置不同版本的JDK。這時(shí),通過(guò)Docker自定義JDK鏡像,就能輕松實(shí)現(xiàn)環(huán)境的隔離和一致性。

此外,為了更好地管理和分發(fā)Docker鏡像,選擇一個(gè)可靠的鏡像倉(cāng)庫(kù)至關(guān)重要。阿里云鏡像倉(cāng)庫(kù)作為國(guó)內(nèi)領(lǐng)先的云服務(wù)提供商,提供了穩(wěn)定、高效的鏡像存儲(chǔ)和分發(fā)服務(wù)。本文將詳細(xì)介紹如何使用Docker自定義JDK鏡像,并將其推送到阿里云鏡像倉(cāng)庫(kù),以便在其他環(huán)境中輕松拉取和使用。

通過(guò)本文的指導(dǎo),你將掌握Docker鏡像的自定義技巧,以及如何將鏡像與阿里云鏡像倉(cāng)庫(kù)集成,為你的Java項(xiàng)目提供穩(wěn)定、可靠的運(yùn)行環(huán)境。無(wú)論你是Docker新手還是有一定經(jīng)驗(yàn)的開(kāi)發(fā)者,相信都能從中受益。

一.alpine自定義jdk鏡像

1.alpine的介紹

是一個(gè)形容詞,意為“高山的,阿爾卑斯山的”。它源自拉丁語(yǔ)“alpinus”,與阿爾卑斯山Alpine脈相關(guān)。在英語(yǔ)中,Alpine通常用來(lái)描述高海拔地區(qū)或高山環(huán)境。此外,在計(jì)算機(jī)技術(shù)領(lǐng)域中,Alpine也是一個(gè)備受矚目的名詞,指的是一種輕量級(jí)的Linux發(fā)行版,常用于構(gòu)建容器化應(yīng)用程序。

Alpine Linux的特點(diǎn)包括小巧輕便、出色的安全性以及高效的性能。其安裝包體積較小,對(duì)資源的需求較低,因此能夠提供更高的性能。同時(shí),Alpine采用了自己獨(dú)特的包管理工具apk,使得軟件包的安裝、更新和卸載變得更加快速和高效。由于這些特性,Alpine Linux在容器化技術(shù)中得到了廣泛應(yīng)用,如Docker等。

此外,Alpine Linux還具備高度的安全性。它通過(guò)使用堆棧保護(hù)、位置無(wú)關(guān)執(zhí)行以及其他安全增強(qiáng)功能來(lái)減少潛在的漏洞和攻擊面。同時(shí),Alpine采用了完整的包管理系統(tǒng),定期更新軟件包以修復(fù)已知的安全漏洞。

總之,無(wú)論是在描述高山環(huán)境還是在計(jì)算機(jī)技術(shù)領(lǐng)域中的輕量級(jí)Linux發(fā)行版方面,Alpine都扮演著重要的角色。如需更多信息,建議查閱相關(guān)文獻(xiàn)或咨詢相關(guān)技術(shù)人員。

2.通過(guò)alpine進(jìn)行制作鏡像 

制作jdk2.0

#下載alpine鏡像文件   
docker pull alpine:latest

#2.創(chuàng)建并編輯dockerfile

touch Dockerfile
vi Dockerfile

注1:dockerfile內(nèi)容

1.指定基礎(chǔ)鏡像,并且必須是第一條指令
FROM alpine:latest
#FROM alpine:3.10

#2.指明該鏡像的作者和其電子郵件
MAINTAINER xyz "xyz@qq.com"

#3.在構(gòu)建鏡像時(shí),指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會(huì)創(chuàng)建目錄
WORKDIR /javaxl_docker/jdk

#4.將一些安裝包復(fù)制到鏡像中,語(yǔ)法:ADD/COPY <src>... <dest>
## ADD與COPY的區(qū)別:ADD復(fù)制并解壓,COPY僅復(fù)制
ADD jdk-8u221-linux-x64.tar.gz /javaxl_docker/jdk/
## glibc安裝包如果從網(wǎng)絡(luò)下載速度實(shí)在是太慢了,先提前下載復(fù)制到鏡像中
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、#5.更新Alpine的軟件源為阿里云,因?yàn)閺哪J(rèn)官源拉取實(shí)在太慢了
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.運(yùn)行指定的命令
## Alpine linux為了精簡(jiǎn)本身并沒(méi)有安裝太多的常用軟件,apk類(lèi)似于ubuntu的apt-get,
## 用來(lái)安裝一些常用軟V件,其語(yǔ)法如下:apk add bash wget curl git make vim docker
## wget是linux下的ftp/http傳輸工具,沒(méi)安裝會(huì)報(bào)錯(cuò)“/bin/sh:   wget: not found”,網(wǎng)上例子少安裝wget
## ca-certificates證書(shū)服務(wù),是安裝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.配置環(huán)境變量
ENV JAVA_HOME=/javaxl_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器啟動(dòng)時(shí)需要執(zhí)行的命令
#CMD ["java","-version"]

#3.執(zhí)行dockerfile創(chuàng)建鏡像

docker build -t jdk8:v2.0 .

#4.創(chuàng)建并啟動(dòng)容器

docker create -it jdk8:v2.0   

進(jìn)入容器并且校驗(yàn)

docker run -it --name myjdkV1  fda02c0ea41a

Alpine制作jre鏡像

Docker容器之最小JRE基礎(chǔ)鏡像

#解壓

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

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

du -sh jre1.8.0_221

進(jìn)行瘦身

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

返回上級(jí)目錄,重新打包jre

      cd ../
      tar -zcvf jre1.8.0_221.tar.gz jre1.8.0_221

創(chuàng)建并編輯dockerfile

注1:dockerfile內(nèi)容如下

vi myjdk

#1.指定基礎(chǔ)鏡像,并且必須是第一條指令
FROM alpine:latest
#FROM alpine:3.10

#2.指明該鏡像的作者和其電子郵件
MAINTAINER xyz "xyz@qq.com"

#3.在構(gòu)建鏡像時(shí),指定鏡像的工作目錄,之后的命令都是基于此工作目錄,如果不存在,則會(huì)創(chuàng)建目錄
WORKDIR /javaxl_docker/jdk

#4.將一些安裝包復(fù)制到鏡像中,語(yǔ)法:ADD/COPY <src>... <dest>
## ADD與COPY的區(qū)別:ADD復(fù)制并解壓,COPY僅復(fù)制
## 注意~~~上傳的瘦身后的jre
ADD jre1.8.0_221.tar.gz /javaxl_docker/jdk/
## glibc安裝包如果從網(wǎng)絡(luò)下載速度實(shí)在是太慢了,先提前下載復(fù)制到鏡像中
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的軟件源為阿里云,因?yàn)閺哪J(rèn)官源拉取實(shí)在太慢了
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.運(yùn)行指定的命令
## Alpine linux為了精簡(jiǎn)本身并沒(méi)有安裝太多的常用軟件,apk類(lèi)似于ubuntu的apt-get,
## 用來(lái)安裝一些常用軟V件,其語(yǔ)法如下:apk add bash wget curl git make vim docker
## wget是linux下的ftp/http傳輸工具,沒(méi)安裝會(huì)報(bào)錯(cuò)“/bin/sh:   wget: not found”,網(wǎng)上例子少安裝wget
## ca-certificates證書(shū)服務(wù),是安裝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.配置環(huán)境變量
## 注意~~~沒(méi)有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

#容器啟動(dòng)時(shí)需要執(zhí)行的命令
#CMD ["java","-version"]

#4.執(zhí)行dockerfile創(chuàng)建鏡像

      docker build -t jdk8:v3.0 .

#5.創(chuàng)建并啟動(dòng)容器

docker create -it jdk8:v3.0   
docker run -it --name myjdkV1  fda02c0ea41a

二.配置阿里云鏡像倉(cāng)庫(kù)

如何創(chuàng)建企業(yè)版實(shí)例_容器鏡像服務(wù)(ACR)-阿里云幫助中心 (aliyun.com)

https://help.aliyun.com/zh/acr/user-guide/create-a-container-registry-enterprise-edition-instance?spm=a2c4g.11174283.0.0.3433568cepADaW

創(chuàng)建命名空間

配置代碼源

云效 Codeup · 企業(yè)級(jí)代碼管理平臺(tái) (aliyun.com):https://codeup.aliyun.com/

創(chuàng)建訪問(wèn)零盤(pán)

agp_796618880294070f6100ac470e4fae0b

 如何將其綁定在代碼園中

配置鏡像倉(cāng)庫(kù)

三.將自定義的jdk鏡像拉去到阿里云倉(cāng)庫(kù)

1. 登錄阿里云Docker Registry

$ docker login --username=aliyun9101505856 registry.cn-hangzhou.aliyuncs.com

用于登錄的用戶名為阿里云賬號(hào)全名,密碼為開(kāi)通服務(wù)時(shí)設(shè)置的密碼。

您可以在訪問(wèn)憑證頁(yè)面修改憑證密碼。

2. 從Registry中拉取鏡像

$ docker pull registry.cn-hangzhou.aliyuncs.com/lz007/lz:[鏡像版本號(hào)]

3. 將鏡像推送到Registry

$ docker login --username=aliyun9101505856 registry.cn-hangzhou.aliyuncs.com</code><code>$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lz007/lz:[鏡像版本號(hào)]</code><code>$ docker push registry.cn-hangzhou.aliyuncs.com/lz007/lz:[鏡像版本號(hào)]

請(qǐng)根據(jù)實(shí)際鏡像信息替換示例中的[ImageId]和[鏡像版本號(hào)]參數(shù)。

4. 選擇合適的鏡像倉(cāng)庫(kù)地址

從ECS推送鏡像時(shí),可以選擇使用鏡像倉(cāng)庫(kù)內(nèi)網(wǎng)地址。推送速度將得到提升并且將不會(huì)損耗您的公網(wǎng)流量。

如果您使用的機(jī)器位于VPC網(wǎng)絡(luò),請(qǐng)使用 registry-vpc.cn-hangzhou.aliyuncs.com 作為Registry的域名登錄。

總結(jié)

到此這篇關(guān)于Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)的文章就介紹到這了,更多相關(guān)Docker自定義JDK鏡像拉取至阿里云內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker容器互聯(lián)的實(shí)現(xiàn)步驟

    docker容器互聯(lián)的實(shí)現(xiàn)步驟

    容器互聯(lián)是除了端口映射外另一種可以與容器通信的方式,本文就來(lái)介紹一下docker容器互聯(lián)的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2023-12-12
  • 如何通過(guò)vs2017的Dockerfile來(lái)生成鏡像

    如何通過(guò)vs2017的Dockerfile來(lái)生成鏡像

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)vs2017的Dockerfile來(lái)生成鏡像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • docker-compose部署MySQL適用于所有版本

    docker-compose部署MySQL適用于所有版本

    本文主要介紹了docker-compose部署MySQL,需要準(zhǔn)備一個(gè)docker-compose.yml文件,通過(guò)運(yùn)行docker-compose up命令啟動(dòng)容器,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 詳解Dockerfile創(chuàng)建自定義Docker鏡像以及CMD與ENTRYPOINT指令的比較

    詳解Dockerfile創(chuàng)建自定義Docker鏡像以及CMD與ENTRYPOINT指令的比較

    這篇文章主要介紹了詳解Dockerfile創(chuàng)建自定義Docker鏡像以及CMD與ENTRYPOINT指令的比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解Docker 配置國(guó)內(nèi)免費(fèi)registry mirror

    詳解Docker 配置國(guó)內(nèi)免費(fèi)registry mirror

    本篇文章主要介紹了 Docker 配置國(guó)內(nèi)免費(fèi)registry mirror,具有一定的參考價(jià)值,有興趣的小伙伴們可以參考一下
    2017-07-07
  • 如何使用docker搭建ELK分布式日志同步方案

    如何使用docker搭建ELK分布式日志同步方案

    ELK作為業(yè)界最常用日志同步方案,我們今天嘗試一下使用docker快速搭建一套ELK方案,ELK使用國(guó)內(nèi)加速源拉取的鏡像比較舊,有條件的朋友可以拉取官網(wǎng)的源,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • docker容器之間通訊-network解讀

    docker容器之間通訊-network解讀

    這篇文章主要介紹了docker容器之間通訊-network解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Docker 搭建集群MongoDB的實(shí)現(xiàn)步驟

    Docker 搭建集群MongoDB的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Docker 搭建集群MongoDB的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause

    Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | d

    這篇文章主要介紹了Docker容器生命周期 | kill和 stop的區(qū)別與聯(lián)系 | docker pause/ unpause,本講內(nèi)容是從?Docker入門(mén)到進(jìn)階里面抽離出來(lái)的內(nèi)容,從而使原文更加有序、重點(diǎn)突出,需要的朋友可以參考下
    2023-08-08
  • docker搭建minio集群的實(shí)現(xiàn)示例

    docker搭建minio集群的實(shí)現(xiàn)示例

    Docker MinIO集群是一種基于Docker的MinIO分布式存儲(chǔ)解決方案,本文主要介紹了docker搭建minio集群的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12

最新評(píng)論