重构基础docker镜像

一开始是使用的构建最小JDK Docker镜像文章构架你的基础docker镜像,但是在使用过程中发现有些命令会用到,比如culr命令等,在这个镜像的基础上进行添加配置的话太费事了,改用alpine重构docker基础镜像

新增:
阿里云仓库的alpine尽可能使用最新的,这样一来,下载使用的openjdk8才能使用最新版的版本,老版本会有各种问题。
查看版本地址:http://mirrors.aliyun.com/alpine/

如下教程使用的是v3.6版本,但是已经有v3.12版本了
v3.6版本安装的java是1.8.0_212版本
v3.12版本安装的java是1.8.0_242版本

所以若使用的话,请使用最新版本的进行安装

仔细看上图,注意有个latest-stable
使用下面的这个可以始终使用最新版的

RUN echo "https://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
RUN echo "https://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories

新建Dockerfile文件

/usr/local/src/jre # cp /etc/localtime . 
/usr/local/src/jre # touch  timezone 
/usr/local/src/jre # echo "Asia/Shanghai" >> timezone  

/usr/local/src/ # ll                                                                                                   
-rw-r--r--  1 root  root   348 7月   1 16:24 Dockerfile_alpine
-rw-r--r--  1 root  root    14 6月  18 11:44 timezone
-rw-r--r--  1 root  root   556 6月  18 11:41 localtime

/usr/local/src/ # cat Dockerfile_alpine
FROM alpine
MAINTAINER sandu <1103324414@qq.com>
COPY localtime /etc/localtime
COPY timezone /etc/timezone
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/main/" > /etc/apk/repositories
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories
RUN ["apk","update"]
RUN ["apk","add","curl"]
RUN ["apk","add","openjdk8"]

构造镜像

docker build -t idocker.io/jre:1.8.0_212 -f Dockerfile_alpine .

查看镜像

/usr/local/src/ # docker images                                                                                 
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
idocker.io/jre               1.8.0_212           43884e29a144        5 seconds ago       102MB
alpine                       latest              a24bb4013296        4 weeks ago         5.57MB

运行镜像

/usr/local/src/ # docker run -it idocker.io/jre:1.8.0_212                                                  
/ # curl --version
curl 7.61.1 (x86_64-alpine-linux-musl) libcurl/7.61.1 LibreSSL/2.5.5 zlib/1.2.11 libssh2/1.8.2
Release-Date: 2018-09-05
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets HTTPS-proxy 
/ # java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
/ # date
Wed Jul  1 16:36:59 CST 2020
/ # 

推送到nexus上的docker镜像仓库

/usr/local/src/ # docker push idocker.io/jre:1.8.0_212                                                    
The push refers to repository [idocker.io/jre]
2eca1ded193a: Pushed 
53ba1eb3fd81: Pushed 
b395cf06f961: Pushed 
d80528bc0a2d: Pushed 
374309465db4: Pushed 
aa932aa3e1ca: Pushed 
6b9ae09f37ea: Pushed 
50644c29ef5a: Layer already exists 
1.8.0_212: digest: sha256:d223e4aa153e2c85f038dd2510e8ac389bad1c1927e7923784d9d5da30c5f2fb size: 1990

注意事项

若是还需要安装其他软件,只需要在Dockerfile_alpine文件中按照原有的继续添加就行了
可以参考这篇文章:https://www.cnblogs.com/sanduzxcvbnm/p/13219846.html来搜索软件,然后再修改Dockerfile_alpine文件

原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13220054.html