• Docker之自定义镜像上传阿里云


    目录

    一、Alpine制作jdk镜像

    1. 下载镜像

    2. 创建并编辑Dockerfile

    3. 执行Dockerfile构建镜像

    4. 测试

    二、Alpine制作jre镜像 

    1. 下载jre

    2. 上传gz压缩包,删除无用的文件,并重新压缩

    3. 创建并编辑Dockerfile

    4. 执行Dockerfile并构建镜像

    5. 测试

    三、将镜像上传阿里云


    一、Alpine制作jdk镜像

    alpine Linux简介

       1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和

         BusyBox以减少系统的体积和运行时的资源消耗。

       2.Alpine Linux提供了自己的包管理工具:apk(注意:ubuntu中是apt-get),我们可以通过https://pkgs.alpinelinux.org/packages 查询包信息

       3.Alpine Docker镜像继承了Alpine Linux发行版的这些优势,相比于其他Linux Docker镜像,它的体积非常小

    1. 下载镜像

    docker pull alpine:latest

    2. 创建并编辑Dockerfile

    1. #1.指定基础镜像,并且必须是第一条指令
    2. FROM alpine:latest
    3. #FROM alpine:3.10
    4. #2.指明该镜像的作者和其电子邮件
    5. MAINTAINER lijie "lijie@qq.com"
    6. #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
    7. WORKDIR /lijie_docker/jdk
    8. #4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
    9. ## ADDCOPY的区别:ADD复制并解压,COPY仅复制
    10. ADD jdk-8u221-linux-x64.tar.gz /lijie_docker/jdk/
    11. ## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
    12. COPY glibc-2.29-r0.apk /lijie_docker/jdk/
    13. COPY glibc-bin-2.29-r0.apk /lijie_docker/jdk/
    14. COPY glibc-i18n-2.29-r0.apk /lijie_docker/jdk/
    15. #5.更新Alpine的软件源为阿里云,因为从默认官源拉取实在太慢了
    16. RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    17.     echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
    18. RUN apk update && apk upgrade
    19. #6.运行指定的命令
    20. ## Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
    21. ## 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
    22. ## wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
    23. ## ca-certificates证书服务,是安装glibc前置依赖
    24. RUN apk --no-cache add ca-certificates wget \
    25.     && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    26.     && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
    27.     && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk
    28. #7.配置环境变量
    29. ENV JAVA_HOME=/lijie_docker/jdk/jdk1.8.0_221
    30. ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    31. ENV PATH=$JAVA_HOME/bin:$PATH
    32. #容器启动时需要执行的命令
    33. #CMD ["java","-version"]

    3. 执行Dockerfile构建镜像

    docker build -f MyjdkDockerfile -t jdk8:v2.0 .

    4. 测试

    docker run -it --name mj1 镜像ID

    java -version

    二、Alpine制作jre镜像 

    1. 下载jre

    下载地址是https://www.java.com/en/download/manual.jsp

    最终下载的资料为:/jre-8u221-linux-x64.tar.gz

    2. 上传gz压缩包,删除无用的文件,并重新压缩

    #解压

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

    #查看jre大小

    du -sh jre1.8.0_221/

    #进入jre目录

    cd jre1.8.0_221/

    #执行瘦身命令

    1. #删除文本文件
    2. rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html \
    3. #删除其他无用文件
    4. rm -rf lib/plugin.jar \
    5. lib/ext/jfxrt.jar \
    6. bin/javaws \
    7. lib/javaws.jar \
    8. lib/desktop \
    9. plugin \
    10. lib/deploy* \
    11. lib/*javafx* \
    12. lib/*jfx* \
    13. lib/amd64/libdecora_sse.so \
    14. lib/amd64/libprism_*.so \
    15. lib/amd64/libfxplugins.so \
    16. lib/amd64/libglass.so \
    17. lib/amd64/libgstreamer-lite.so \
    18. lib/amd64/libjavafx*.so \
    19. lib/amd64/libjfx*.so

    #返回上级目录,删除原来的jre压缩包,再重新压缩

    cd ../

    rm -rf jre-8u221-linux-x64.tar.gz

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

    3. 创建并编辑Dockerfile

    vim MyjdkDockerfile2

    内容如下:

    1. #1.指定基础镜像,并且必须是第一条指令
    2. FROM alpine:latest
    3. #FROM alpine:3.10
    4. #2.指明该镜像的作者和其电子邮件
    5. MAINTAINER lijie "lijie@qq.com"
    6. #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
    7. WORKDIR /lijie_docker/jdk
    8. #4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
    9. ## ADDCOPY的区别:ADD复制并解压,COPY仅复制
    10. ## 注意~~~上传的瘦身后的jre
    11. ADD jre1.8.0_221.tar.gz /lijie_docker/jdk/
    12. ## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
    13. COPY glibc-2.29-r0.apk /lijie_docker/jdk/
    14. COPY glibc-bin-2.29-r0.apk /lijie_docker/jdk/
    15. COPY glibc-i18n-2.29-r0.apk /lijie_docker/jdk/
    16. #5.更新Alpine的软件源为阿里云,因为从默认官源拉取实在太慢了
    17. RUN echo http://mirrors.aliyun.com/alpine/v3.10/main/ > /etc/apk/repositories && \
    18. echo http://mirrors.aliyun.com/alpine/v3.10/community/ >> /etc/apk/repositories
    19. RUN apk update && apk upgrade
    20. #6.运行指定的命令
    21. ## Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,
    22. ## 用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
    23. ## wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
    24. ## ca-certificates证书服务,是安装glibc前置依赖
    25. RUN apk --no-cache add ca-certificates wget \
    26. && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \
    27. && apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
    28. && rm -rf /var/cache/apk/* glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk
    29. #7.配置环境变量
    30. ## 注意~~~没有jdk啦,直接指向jre
    31. ENV JAVA_HOME=/lijie_docker/jdk/jre1.8.0_221
    32. ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    33. ENV PATH=$JAVA_HOME/bin:$PATH
    34. #容器启动时需要执行的命令
    35. #CMD ["java","-version"]

    4. 执行Dockerfile并构建镜像

    docker build -f MyjdkDockerfile2 -t jdk8:v3.0 .

    5. 测试

    docker run -it --name mj2 镜像ID

    java -version

    三、将镜像上传阿里云

     #进入阿里网站

    开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云

    #搜索“容器镜像服务”

    #创建企业版实例

    #登录容器镜像服务控制台

    #创建个人实例

    #设置登录密码

    #创建命名空间

    #选择代码源,进行账号绑定

    #进入Codeup

    #点击新建库

    #创建完成后,回到首页,点击右上角的小头像,选择个人设置

    #选择个人访问令牌,点击创建访问令牌

    #输入名称,选择过期时间,作用范围全部勾选上

    #复制密码

    #再返回代码源,绑定账号,名称要与令牌名称一致,输入刚刚复制的令牌密码

    #点击镜像仓库,选择命名空间,再创建镜像仓库

    #输入仓库名称,选择仓库类型

    #创建镜像仓库

    #创建完成后,根据操作指南进行操作

    #回到连接工具操作,先登录阿里账号,输入密码

    #将本地镜像打个标签

    #推送本地镜像到阿里云

    #在镜像版本里面就可以看到上传的镜像了

  • 相关阅读:
    NXP iMX8MM 修改 UART4至 Cortex-A53 核心
    self-supervised text erasing with controllable image synthesis
    浅析云数据安全的必要性
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)
    软考考试多少分算通过?
    JMeter + InfluxDB2
    eclipse创建Maven项目(保姆级教学)
    【vue设计与实现】内部组件和模块 1 - KeepAlive组件的实现原理
    Arduino驱动ICG-20660L传感器(惯性测量传感器篇)
    区块链浏览器与合约代码
  • 原文地址:https://blog.csdn.net/lijie1025/article/details/136365910