自定义镜像上传阿里云
创始人
2024-03-25 09:12:07

目录标题

  • 一、Docker制作jdk镜像
    • 1.jdkv.1.0的制作
      • 1.1创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
      • 1.2.编写 Dockerfile 文件
      • 1.3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像
    • 2.jdk2.0的制作
    • 3.jdk3.0的制作
  • 二、Docker镜像上传至阿里云
    • 前期准备

一、Docker制作jdk镜像

1.jdkv.1.0的制作

1.1创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件

上传jdk的安装包和创建Dockerfile文件
在这里插入图片描述

在这里插入图片描述

1.2.编写 Dockerfile 文件

#1.指定基础镜像,并且必须是第一条指令FROM centos:7#2.指明该镜像的作者和其电子邮件MAINTAINER yzp "2878276593@qq.com"#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录WORKDIR /javaxy_docker/jdk#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD ... ,注意:jdk*.tar.gz使用的是相对路径ADD jdk-8u221-linux-x64.tar.gz /javaxy_docker/jdk/#5.配置环境变量ENV JAVA_HOME=/javaxy_docker/jdk/jdk1.8.0_221ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV PATH=$JAVA_HOME/bin:$PATH#容器启动时需要执行的命令#CMD ["java","-version"]

在这里插入图片描述

1.3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像

 docker build -t jdk8:v1.0 .

在这里插入图片描述

测试:

docker images
docker run -it  10c7c530a2e6(指的是容器id)  /bin/bash
Java  -version

在这里插入图片描述

2.jdk2.0的制作

先对以上的Dockerfile进行备份
在这里插入图片描述

#1.指定基础镜像,并且必须是第一条指令
FROM alpine:latest
#FROM alpine:3.10#2.指明该镜像的作者和其电子邮件
MAINTAINER yzp "2878276593@qq.com"#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /javaxy_docker/jdk#4.将一些安装包复制到镜像中,语法:ADD/COPY ... 
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
ADD jdk-8u221-linux-x64.tar.gz /javaxy_docker/jdk/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /javaxy_docker/jdk/
COPY glibc-bin-2.29-r0.apk /javaxy_docker/jdk/
COPY glibc-i18n-2.29-r0.apk /javaxy_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=/javaxy_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"]

在这里插入图片描述
3.执行dockerfile创建镜像

 docker build -t jdk8:v2.0 .

在这里插入图片描述
测试:
在这里插入图片描述

3.jdk3.0的制作

Docker容器之最小JRE基础镜像
#1.首先下载jre,
下载地址是https://www.java.com/en/download/manual.jsp,大概是77M
最终下载的资料为:/jre-8u221-linux-x64.tar.gz

#2.rz上传至centos,并删除无用的文件,并重新压缩

  #解压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

在这里插入图片描述

在这里插入图片描述
#返回上级目录,重新打包jre
cd …/
tar -zcvf jre1.8.0_221.tar.gz jre1.8.0_221
在这里插入图片描述
#3.创建并编辑dockerfile
我们先对之前的dickerfile进行备份,然后再删除dockerfile重新进行编辑
在这里插入图片描述

  注1:dockerfile内容如下
#1.指定基础镜像,并且必须是第一条指令
FROM alpine:latest
#FROM alpine:3.10#2.指明该镜像的作者和其电子邮件
MAINTAINER yzp "2878276593@qq.com"#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /javaxy_docker/jdk#4.将一些安装包复制到镜像中,语法:ADD/COPY ... 
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
## 注意~~~上传的瘦身后的jre
ADD jre1.8.0_221.tar.gz /javaxy_docker/jdk/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /javaxy_docker/jdk/
COPY glibc-bin-2.29-r0.apk /javaxy_docker/jdk/
COPY glibc-i18n-2.29-r0.apk /javaxy_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=/javaxy_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"]

在这里插入图片描述

#4.执行dockerfile创建镜像

  docker build -t jdk8:v3.0 .

在这里插入图片描述

测试:
在这里插入图片描述

二、Docker镜像上传至阿里云

将Docker镜像上传至阿里云(或从阿云下载镜像)

前期准备

#1.注册阿里云账户
阿里云官方网站链接:https://dev.aliyun.com
在这里插入图片描述

#2.登陆账户
#3.配置Docker加速器
注:搜索“容器镜像服务”
在这里插入图片描述

#4.创建镜像仓库的命名空间
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进行登录:
在这里插入图片描述

在这里插入图片描述
然后推送
在这里插入图片描述

在这里插入图片描述
成功之后点击镜像版本即可查看上传的镜像

在这里插入图片描述
先删除已经存在的镜像,然后重新从我们自己的镜像仓库拉取
在这里插入图片描述

在这里插入图片描述
最终可以从镜像仓库中的镜像拉取到容器中
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...