一、镜像编写
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
结束