自定义镜像上传阿里云

  • alpine Linux简介
  • 思维导图
  • 使用Dockerfile基于alpine制作JDK8镜像
  • 使用Dockerfile基于alpine制作最小JRE基础镜像
  • 将Docker镜像上传至阿里云(上传、拉取)

alpine Linux简介

  • 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。

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

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

  • 对比常用的、没有压缩过的基础镜像(查看当前的:latest标签):
    Alpine - 5.5MB
    Ubuntu - 124.8 MB
    Debian - 125.1MB
    Centos - 220MB

  • 4.建议使用Alpine Linux 3.10.0版本,这也是 v3.10 稳定系列的首个版本
    alpine:3.10

思维导图

使用Dockerfile基于alpine制作JDK8镜像

1.下载镜像

  • docker pull alpine:3.10

2.创建并编辑Dockerfile

  • 2.1 cd zcx(我创建存放镜像的目录)
  • 2.2 ls 查看下有什么东西
  • 2.3 mkdir alpine 创建alpine文件夹 再在里面创建一个jdk文件夹 方便我们区分alpine制作的jdk8镜像
  • 2.4再将我们 jdk-8u221-linux-x64.tar.gz文件上传到 jdk文件夹里面

  • 2.5 编辑 vi DockerFile文件 搞 定后:wq退出

#1.指定基础镜像,并且必须是第一条指令
#FROM alpine:latest
FROM alpine:3.10#2.指明该镜像的作者和其电子邮件
MAINTAINER xyz "xyz@qq.com"#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /abc#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
## 注意这里的宿主机上的jdk的包必须跟Dockerfile在同一目录下,所以事先需要把jdk-8u221-linux-x64.tar.gz的包复制到跟Dockerfile的同级的目录中
## 这里将jdk的包复制到镜像的工作目录/abc中的jdk目录下,所以最后配置jdk的环境变量应该为/abc/jdk/jdk1.8.0_221
ADD jdk-8u221-linux-x64.tar.gz /abc/jdk## glibc安装包如果从网络下载速度实在是太慢了,先提前下载这三个到宿主机的跟Dockerfile同级的目录中,然后再从宿主机中复制到镜像中/zking/alpine目录中
COPY glibc-2.29-r0.apk /abc
COPY glibc-bin-2.29-r0.apk /abc
COPY glibc-i18n-2.29-r0.apk /abc#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.运行指定的命令
## \代表命令没有结束
##1.安装ca-certificates证书服务,和wget。      ##ca-certificates证书服务是安装glibc前置依赖。wget在alpine精简版的系统里面是没有的,如果要用wget命令下载则必须先安装wget
##2.下载一段公钥并存放到/etc/apk/keys/目录下。      ##wget是linux下的ftp/http传输工具,没安装会报错“/bin/sh:   wget: not found”,网上例子少安装wget
##3.安装之前的三个glibc(这三个包其实实在/zking/alpine中的,但是指定了工作目录而且没有切换所以可以不指定完整路径)。    ##Alpine linux为了精简本身并没有安装太多的常用软件,apk类似于ubuntu的apt-get,用来安装一些常用软V件,其语法如下:apk add bash wget curl git make vim docker
##4.删除缓存里面的所有东西
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=/abc/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
  • 这三个包需要自己下载
  • glibc安装包如果从网络下载速度实在是太慢了,先提前下载这三个到宿主机的跟Dockerfile同级的目录中,然后再从宿主机中复制到镜像中/zking/alpine目录中
    glibc-2.29-r0.apk /abc
    glibc-bin-2.29-r0.apk /abc
    glibc-i18n-2.29-r0.apk /abc

3.执行Dockerfile创建镜像

  • docker build -t jdk8:v2.0 .


4.创建并启动容器

  • docker run -it -d --name xxx jdk8:v2.0 /bin/sh

5.进入容器

  • docker exec -it 容器名字 /bin/sh

6.测试jdk

  • java -version

使用Dockerfile基于alpine制作最小JRE基础镜像

跳转并创建jre文件夹


1.将jre的jar包上传至服务器中,然后解压

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


vi Dockerfile 加入环境变量

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

2.给jre瘦身

2.进入jre目录,并执行瘦身命令

  • cd jre1.8.0_221
  • #删除文本文件
    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



3.返回上级目录,重新打包jre

  • tar -zcf jre1.8.0_221.tar.gz jre1.8.0_221


4.执行Dockerfile创建镜像

  • docker build -t jdk8:v3.0 .

5.创建并启动容器

  • docker run -it -d jdk8:v3.0 /bin/sh

6.进入容器

  • docker exec -it 容器ID /bin/sh

7.测试jdk

  • java -version

将Docker镜像上传至阿里云(上传、拉取)

1.前期准备

  • 登陆阿里云,搜索【容器镜像服务】
  • 配置Docker加速器
  • 创建命名空间
  • 创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
  • 点击对应镜像仓库列表后的管理:上传和下载镜像的相关命令都在管理里面有详细说明


    好了之后下一步




    绑定完成

再来重新创建镜像仓库一下


2. push(推)镜像

  • 登录阿里云 docker login --username=17674762082
    registry.cn-hangzhou.aliyuncs.com

    密码并不是登录阿里云的密码,而是在访问凭证里面设置的固定密码





进行手机验证

重点来了:修改镜像的名字,让它符合阿里云的规则

意思就是一个苹果如果没有商品合格的检验标签 那么商家就不认可这个苹果可以售卖





搞定收工

自定义镜像上传阿里云(图文教程 附带思维导图)相关推荐

  1. Docker自定义镜像上传阿里云

    目录 1. alpine 简介 2. 基于alpine构建jdk8镜像 2.1 Dockerfile 2.2 将构建目录上传到linux中 2.3 执行构建 3. 镜像瘦身 4. 上传阿里云镜像仓库 ...

  2. 自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版(centos.Ubuntu),Alpine采用了mus ...

  3. docker之自定义镜像上传阿里云

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

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

    alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...

  5. docker镜像上传阿里云仓库

    推送至阿里云镜像: 1.首先在阿里云上选择容器镜像服务,创建命名空间以及镜像仓库 2. docker login --username=zhangshitongsky@163.com registry ...

  6. (私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用

    (私有云)客户给的VMware镜像磁盘如何制作成自定义镜像上传至openstack镜像服务器供客户使用 目录 1.准备工作 2.修改域xml配置文件以及是否缩容 3.在镜像更新服务器上启动这个自定义镜 ...

  7. ESP8266获取传感器数值,上传阿里云

    #include <DHT.h> #include<ESP8266WiFi.h> #include <PubSubClient.h> #include <Wi ...

  8. java利用iText写pdf并上传阿里云OSS并下载

    iText是用于生成pdf的一个类库,通过它可以生成pdf或者将XML , HTML转换城pdf模版:阿里云的oss对象存储存储的类型比较多了,可以存储音频 图片 pdf excel 等资源,oss本 ...

  9. 生成Excel表格并上传阿里云存储

    1.程序内部生成Excel表格 1.1 表头和数据分离 //表头存储格式 List<String[]> headerGoodsOrderListString[] h1 = new Stri ...

最新文章

  1. Git 2.9增加了Merge、Rebase、Commit等新特性
  2. AI大牛压箱底的14本2018年进阶书(附PDF链接)
  3. pycharm创建mysql项目_python+Django+pycharm+mysql 搭建首个web项目详解
  4. Git中Add后对部分文件进行取消
  5. 如何利用Featue对特定的文档库或列表添加listviewtoolbar上的button
  6. oracle临时表空间组,证明临时表空间组在并发session时的作用
  7. B树、B-树、B+树、B*树【转】,mysql索引
  8. nubiax系统Android p正式版,nubia X更新 升级为基于Android P的JOS
  9. python10进制转2进制掩码_Python简单实现子网掩码转换的方法
  10. 上海python工资一般多少-python数据分析师待遇有多少?工资待遇如何?
  11. Lua参数绑定函数实现方法
  12. 实时消息传输协议(RTMP)详解
  13. 【单片机】2.2 AT89S52的引脚功能
  14. PRN(20201012):Improved updating of Euclidean distance maps and Voronoi diagrams
  15. postman测试图片上传接口一直失败的解决办法
  16. android虚拟机固定横屏幕竖屏,用VBox虚拟机安装Android 屏幕90度翻转竖屏设置
  17. NC14548-B-逃脱(bfs)
  18. linux 解压所有以zip结尾的文件_Linux下的压缩zip,解压缩unzip命令详解及实例
  19. 如何将日语在线翻译成中文
  20. 《算法图解》学习笔记(十一):十种经典的算法与数据结构

热门文章

  1. 【Geek】极客信条
  2. c++判断字符串是否包含指定字符串/判断字符串是否相等/保留小数点后几位
  3. Biotin-PEG-DSPE,DSPE-PEG-BIO,385437-57-0分子量:1K,2K,3K,5K,10K
  4. 实验吧 writeup
  5. html整数正则,javascript正则怎么判断是否整数?
  6. 程序员的代码行数真的越少越好吗?
  7. Linux中的虚拟机创建
  8. CDO安装步骤(for Mac)
  9. Kolla Ansible 部署 -T版openstack
  10. 乐理matlab频率表,必看!每个学琴者都要知道的基本乐理知识……