Docker.镜像上传

一、镜像编写

1、查看镜像

jdk8有638MB太大了,

2、搜索alpine

一个缩小版的基础镜像,今天基于它来写

3、修改Dockerfile:

其实是应该使用jre的,因为我的jdk中有jre

#1.指定基础镜像,并且必须是第一条指令

#FROM alpine:latest

FROM alpine:3.10

#2.指明该镜像的作者和其电子邮件

MAINTAINER mi "mi0219@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录

WORKDIR /usr/local/java

#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>

## ADD与COPY的区别:ADD复制并解压,COPY仅复制

ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/

## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中

COPY glibc-2.29-r0.apk /usr/local/java/

COPY glibc-bin-2.29-r0.apk /usr/local/java/

COPY glibc-i18n-2.29-r0.apk /usr/local/java/

#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=/usr/local/java/jdk1.8.0_221

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

ENV PATH=$JAVA_HOME/bin:$PATH

4、增加

5、下载jdk.2.0 

下载成功:

 二、阿里云配置

1、服务器中创建个人实例、

2、新建命名空间

3、创建镜像仓库

4、上传镜像

(1)服务器的镜像是没有镜像版本的

 现在的镜像还是有问题的

jdk.2.0 的大小还是有458MB的 ,对于操作还是有点小压力的,

(2) 将jdk改为jre

使用已将打好包的jre

 (3)将Dockerfile中的jdk改为jre

#1.指定基础镜像,并且必须是第一条指令

#FROM alpine:latest

FROM alpine:3.10

#2.指明该镜像的作者和其电子邮件

MAINTAINER mi "mi0219@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录

WORKDIR /usr/local/java

#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>

## ADD与COPY的区别:ADD复制并解压,COPY仅复制

ADD jre-8u221-linux-x64.tar.gz /usr/local/java/

## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中

COPY glibc-2.29-r0.apk /usr/local/java/

COPY glibc-bin-2.29-r0.apk /usr/local/java/

COPY glibc-i18n-2.29-r0.apk /usr/local/java/

#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=/usr/local/java/jre1.8.0_221

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

ENV PATH=$JAVA_HOME/bin:$PATH

(4)打包

已近解压完了的,下载jdk:3.0

 下载成功:

 现在的jdk:3.0版本的就只有167MB了

 还可以在变得更小

(5)解压文件夹

 

 进入jre中,执行瘦身命令

 瘦身命令:

#删除文本文件
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

在将文件变回压缩包:

三、阿里云上传下载

1、阿里云的基本信息已经教了如何操作

①、登录

docker login --username=mi**** registry.cn-hangzhou.aliyuncs.com

 ②、将镜像推送到Registry

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/miweiyan/docker03:[镜像版本号]

 现在就会多了镜像

原理:刚刚操作的是jdk:4.0的镜像,执行了代码后,从新创出了一个镜像,而新创出的镜像与  jdk:4.0是同一个,但是名字不一样它加了仓库名称并且按照我的修改为了1.0

 推送到远程:

docker push registry.cn-hangzhou.aliyuncs.com/miweiyan/docker03:[镜像版本号]

上传完成: 

服务器中的镜像版本就有东西了,上传的是一个压缩版

 2、模拟一个环境

①、将所有镜像删除

②、假如以后去别人电脑上安装镜像

(1)从Registry中拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/miweiyan/docker03:[镜像版本号]

 查看镜像:

 (2)基于阿里云镜像新建容器

 查看所有容器,

 aliyun01的进入方式不同“ /bin/sh ”

进入容器:

(3)往容器中丢文件不好操作

先退出:exit

发项目,将jar包拉入:

 希望容器启动完之后拿到jar包

(4)启动容器:
新建成功后,查看

 运行spring.jar

 容器中运行服务成功,但是现在外面浏览器访问不到

 让浏览器访问,修改语句:

8080:8080:是将主机的8080绑到8080上去

 访问成功,这是项目有错误报的500

 结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值