linux12企业实战 -- 06alpine Linux简介alpine制作jdk镜像jre镜像 Alpine 命令
Posted FikL-09-19
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux12企业实战 -- 06alpine Linux简介alpine制作jdk镜像jre镜像 Alpine 命令相关的知识,希望对你有一定的参考价值。
文章目录
一、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镜像,它的体积非常小 对比常用的、没有压缩过的基础镜像(查看当前的:latest标签):
Alpine - 4.8MB
centos - 124.8 MB
Debian - 125.1MB
Centos - 196MB
# 4.建议使用Alpine Linux 3.10.0版本,这也是 v3.10 稳定系列的首个版本
alpine:3.10
二、alpine制作jdk镜像
1.下载镜像
[root@test ~]# docker pull alpine
2.创建并编辑dockerfile
将提前下载好的安装包上传到服务器上
因为glibc安装包如果从网络下载速度实在是太慢了,可提前下载上传到服务器上
[root@test ~]# mkdir apline
[root@test ~]# cd apline/
[root@test apline]# vim Dockerfile
#1.指定基础镜像,并且必须是第一条指令
FROM alpine:latest
#FROM alpine:3.10
#2.指明该镜像的作者和其电子邮件
MAINTAINER cpc "1715554782@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
RUN mkdir -p /cpc_docker/jdk
WORKDIR /cpc_docker/jdk
#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
ADD jdk-8u211-linux-x64.tar.gz /cpc_docker/jdk/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /cpc_docker/jdk/
COPY glibc-bin-2.29-r0.apk /cpc_docker/jdk/
COPY glibc-i18n-2.29-r0.apk /cpc_docker/jdk/
#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=/cpc_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
#CMD ["java","-version"]
3.执行dockerfile创建镜像
[root@test apline]# ll
total 190428
-rw-r--r-- 1 root root 1981 Oct 10 2021 Dockerfile
-rw-r--r-- 1 root root 194990602 Oct 9 22:43 jdk-8u211-linux-x64.tar.gz
[root@test ~]# docker build -t jdk8:v1.0 .
4.创建并启动容器
[root@test ~]# docker create -it jdk8:v1.0
[root@test ~]# docker start 容器ID
5.进入容器
注:最后是sh而非bash 也可直接 启动并进入容器 docker run -it --name myjdk 容器ID
[root@test ~]# docker exec -it 容器ID /bin/sh
6.测试jdk
注1:docker exec -it 容器ID /bin/sh 默认使用当前帐号(即root)登入,通过whoami命令可以查看当前用户名, 还可以通过如下命令切换到其它帐号docker exec -it --user root <容器ID> /bin/sh
注2:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小大家可以自己下来,创建一个容器试一下
注3:最后制作完成后的镜像大小为400M左右
[root@test ~]# java -version
三、Alpine制作jre镜像
Docker容器之最小JRE基础镜像
1.首先下载jre
https://www.java.com/en/download/manual.jsp
2.上传至centos中镜像制作的那个文件,并删除无用的文件,并重新压缩
# 1、解压
[root@test ~]# mkdir apline
[root@test ~]# cd apline/
[root@test apline]# ll -h
-rw-r--r-- 1 root root 186M Oct 9 22:43 jdk-8u211-linux-x64.tar.gz
[root@test apline]# tar -xf jre-8u221-linux-x64.tar.gz
[root@test apline]# ll -h
drwxr-xr-x 7 10 143 245 Apr 2 2019 jdk1.8.0_211
-rw-r--r-- 1 root root 186M Oct 9 22:43 jdk-8u211-linux-x64.tar.gz
# 2、查看jre大小(瘦身前230M)
[root@test apline]# du -sh jdk1.8.0_211/
392M jdk1.8.0_211/
# 3、进入jre目录,并执行瘦身命令
[root@test apline]# cd jre1.8.0_221
执行瘦身命令,这个命里太长单独贴出来(直接在 jre1.8.0_221 这个目录下 copy 命里回车运行就好了)
[root@test jdk1.8.0_211]# ls -l
total 25984
drwxr-xr-x 2 10 143 4096 Apr 2 2019 bin
-r--r--r-- 1 10 143 3244 Apr 2 2019 COPYRIGHT
drwxr-xr-x 3 10 143 132 Apr 2 2019 include
-rw-r--r-- 1 10 143 5213268 Mar 14 2019 javafx-src.zip
drwxr-xr-x 5 10 143 185 Apr 2 2019 jre
drwxr-xr-x 5 10 143 245 Apr 2 2019 lib
-r--r--r-- 1 10 143 44 Apr 2 2019 LICENSE
drwxr-xr-x 4 10 143 47 Apr 2 2019 man
-r--r--r-- 1 10 143 159 Apr 2 2019 README.html
-rw-r--r-- 1 10 143 424 Apr 2 2019 release
-rw-r--r-- 1 10 143 21105019 Apr 2 2019 src.zip
-rw-r--r-- 1 10 143 112748 Mar 14 2019 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r-- 1 10 143 149725 Apr 2 2019 THIRDPARTYLICENSEREADME.tx
# 1、删除文本文件
[root@test jdk1.8.0_211]# rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txtTHIRDPARTYLICENSEREADME.txt Welcome.html \\
# 2、删除其他无用文件
[root@test jdk1.8.0_211]# 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
返回上级目录,重新打包jre
[root@test jdk1.8.0_211]# tar czf jre1.tar.gz ./
[root@test jdk1.8.0_211]# mv jre1.tar.gz ../
3.创建并编辑dockerfile
FROM alpine:latest
#FROM alpine:3.10
#2.指明该镜像的作者和其电子邮件
MAINTAINER cpc '1715554782c@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /cpc_docker/jdk
#4.将一些安装包复制到镜像中,语法:ADD/COPY <src>... <dest>
## ADD与COPY的区别:ADD复制并解压,COPY仅复制
## 注意~~~上传的瘦身后的jre
ADD jre1.tar.gz /cpc_docker/jdk/
## glibc安装包如果从网络下载速度实在是太慢了,先提前下载复制到镜像中
COPY glibc-2.29-r0.apk /cpc_docker/jdk/
COPY glibc-bin-2.29-r0.apk /cpc_docker/jdk/
COPY glibc-i18n-2.29-r0.apk /cpc_docker/jdk/
#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=/cpc_docker/jdk/jre1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
#CMD ["java","-version"]
4.执行dockerfile创建镜像
[root@test apline]# docker build -t jdk8:v2.0 .
5.创建并启动容器
[root@test apline]# docker create -it jdk8:v2.0
[root@test apline]# docker start 容器ID
6.进入容器
[root@test apline]# docker exec -it 容器ID /bin/sh
7.测试jdk
[root@test apline]# java -version
注1:openjdk:8-jdk-alpine这个镜像就和我们自己创建的镜像是一样,只不过JDK瘦身过了,体积更小。另外,openjdk和jdk也是有一定区别的,详情请点我
注2:Alpine制作JDK8镜像是有时区问题的,可以使用时区查看命令看一下
三个版本的jdk镜像结果如下:
V0.0:centos7+jdk1.8制作而成
V1.0:alpine3.10+jdk1.8制作而成
V2.0:alpine3.10+jre1.8+瘦身命令制作而成
四、 Alpine 命令
0- 简介
0.1- 特点
小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
安全:面向安全的轻量发行版;
简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像
0.2- Docker下的运行
[root@test ~]# docker pull alpine
[root@test ~]# docker run -it --name myalpine alpine
0.3- 作为Docker容器的基础镜像
以Alpine为基础镜像,创建一个mysql容器
FROM alpine:3.6
RUN apk add --no-cache mysql-client
ENTRYPOINT ["mysql"]
0.4- 网卡配置文件
[root@test ~]# /etc/network/interfaces
[root@test ~]# /etc/init.d/networking restart #重启网络
1- Alpine Linux源管理
1.1- 国内源
清华大学:https://mirror.tuna.tsinghua.edu.cn/alpine/
阿里云:https://mirrors.aliyun.com/alpine/3.
中科大:http://mirrors.ustc.edu.cn/alpine/
1.2- 配置
将 /etc/apk/repositories 文件中 Alpine 默认的源地址 http://dl-cdn.alpinelinux.org/ 替换为 http://mirrors.ustc.edu.cn/ 即可
[root@test ~]# sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
直接编辑 /etc/apk/repositories 文件:
https://mirrors.ustc.edu.cn/alpine/v3.5/main
https://mirrors.ustc.edu.cn/alpine/v3.5/community
使用 latest-stable 指向最新的稳定版本:
https://mirrors.ustc.edu.cn/alpine/latest-stable/main
https://mirrors.ustc.edu.cn/alpine/latest-stable/community
最后:
apk update
1.3- 执行命令
echo http://mirrors.ustc.edu.cn/alpine/v3.7/main >/etc/apk/repositories
echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >>/etc/apk/repositories
echo http://mirrors.ustc.edu.cn/alpine/edge/main >>/etc/apk/repositories
echo http://mirrors.ustc.edu.cn/alpine/edge/community >>/etc/apk/repositories
echo http://mirrors.ustc.edu.cn/alpine/edge/testing >>/etc/apk/repositories
或者:
echo 'http://mirrors.ustc.edu.cn/alpine/v3.7/main
http://mirrors.ustc.edu.cn/alpine/v3.7/community
http://mirrors.ustc.edu.cn/alpine/edge/main
http://mirrors.ustc.edu.cn/alpine/edge/community
http://mirrors.ustc.edu.cn/alpine/edge/testing' >/etc/apk/repositories
2- Alpine包管理
Alpine使用apk进行包管理
2.1- apk命令
2.1.1- apk update
[root@test ~]# apk update #更新最新镜像源列表
2.1.2- apk search
apk search #查找所以可用软件包
apk search -v #查找所以可用软件包及其描述内容
apk search -v 'acf*' #通过软件包名称查找软件包
apk search -v -d 'docker' #通过描述文件查找特定的软件包
2.1.3- apk add
apk add openssh #安装一个软件
apk add openssh openntp vim #安装多个软件
apk add --no-cache mysql-client #不使用本地镜像源缓存,相当于先执行update,再执行add
apk add -u #升级指定软件包
2.1.4- apk info
apk info #列出所有已安装的软件包
apk info -a zlib #显示完整的软件包信息
apk info -r zlib #列出所有包的依赖
apk info -s zlib #显示软件包大小
apk info -d zlib #显示软件包的描述
apk info --who-owns /sbin/lbu #显示指定文件属于的包
apk info -L zlib #列出软件包的内容
apk info -e zlib #检测软件包的安装
apk info -R zlib #列出指定包的依赖
2.1.5- apk upgrade
apk upgrade #升级所有软件
apk upgrade openssh #升级指定软件
apk upgrade openssh openntp vim #升级多个软件
apk add --upgrade busybox #指定升级部分软件包
2.1.6- apk del
apk del openssh #删除一个软件
3- Alpine服务管理
使用的是RC系列命令进行服务管理.
3.1- rc-update
用于不同运行级增加或者删除服务
rc-update --help
Usage: rc-update [options] add <service> [<runlevel>...]
or: rc-update [options] del <service> [<runlevel>...]
or: rc-update [options] [show [<runlevel>...]]
Options: [ asuChqVv ]
-a, --all Process all runlevels
-s, --stack Stack a runlevel instead of a service
-u, --update Force an update of the dependency tree
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
3.2- rc-status
用于运行级的状态管理
rc-status --help
Usage: rc-status [options] <runlevel>...
or: rc-status [options] [-a | -c | -l | -m | -r | -s | -u]
Options: [ aclmrsuChqVv ]
-a, --all Show services from all run levels
-c, --crashed Show crashed services
-l, --list Show list of run levels
-m, --manual Show manually started services
-r, --runlevel Show the name of the current runlevel
-s, --servicelist Show service list
-u, --unused Show services not assigned to any runlevel
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
3.3- rc-service
用于管理服务的状态
rc-service --help
Usage: rc-service [options] [-i] <service> <cmd>...
or: rc-service [options] -e <service>
or: rc-service [options] -l
or: rc-service [options] -r <service>
Options: [ ce:ilr:INChqVv ]
-e, --exists <arg> tests if the service exists or not
-c, --ifcrashed if the service is crashed then run the command
- -i, --ifexists if the service exists then run the command
-I, --ifinactive if the service is inactive then run the command
-N, --ifnotstarted if the service is not started then run the command
-l, --list list all available services
-r, --resolve <arg> resolve the service name to an init script
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
3.4- openrc
管理不同的运行级
openrc --help
Usage: openrc [options] [<runlevel>]
Options: [ a:no:s:SChqVv ]
-n, --no-stop do not stop any services
-o, --override <arg> override the next runlevel to change into
when leaving single user or boot runlevels
-s, --service <arg> runs the service specified with the rest
of the arguments
-S, --sys output the RC system type, if any
-h, --help Display this help output
-C, --nocolor Disable color output
-V, --version Display software version
-v, --verbose Run verbosely
-q, --quiet Run quietly (repeat to suppress errors)
3.5- 案例
rc-update add docker boot #增加docker服务到系统启动时运行
rc-service networking restart #重启网络服务
rc-status -a #列出所有服务
4- 实用命令
apk add iproute2 #查看网络连接的协议端口的命令ss,可以替代netstat命令
# ss -ta ##查看建立的TCP连接
apk add drill #替代dig和nslookup DNS查询命令
# drill blog.csdn.net @8.8.8.8 ##查询域名的信息
# drill -x 114.114.114.114 @10.61.191.221 ##根据IP地址,反向查找域名
apk add openssh-server #开启SSH服务
/etc/init.d/sshd restart
rc-update add sshd
5- 详细介绍wiki
http://wiki.alpinelinux.org
6、补充lpine(JAVA环境)Docker基础镜像制作
# AlpineLinux with a glibc-2.29-r0 and Oracle Java 8
FROM alpine:latest
MAINTAINER Anastas Dancha <anapsix@random.io>
# thanks to Vladimir Krivosheev <develar@gmail.com> aka @develar for smaller image
# and Victor Palma <palma.victor@gmail.com> aka @devx for pointing it out
# Java Version and other ENV
ENV JAVA_VERSION_MAJOR=8 \\
JAVA_VERSION_MINOR=202 \\
JAVA_VERSION_BUILD=08 \\
JAVA_PACKAGE=jdk \\
JAVA_JCE=standard \\
JAVA_HOME=/opt/jdk \\
PATH=${PATH}:/opt/jdk/bin \\
GLIBC_REPO=https://github.com/sgerrand/alpine-pkg-glibc \\
GLIBC_VERSION=2.29-r0 \\
LANG=C.UTF-8
# do all in one step
RUN set -ex && \\
[[ ${JAVA_VERSION_MAJOR} != 7 ]] || ( echo >&2 'Oracle no longer publishes JAVA7 packages' && exit 1 ) && \\
apk -U upgrade && \\
apk add tzdata libstdc++ curl ca-certificates bash && \\
cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \\
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \\
for pkg in glibc-${GLIBC_VERSION} glibc-bin-${GLIBC_VERSION} glibc-i18n-${GLIBC_VERSION}; do curl -sSL ${GLIBC_REPO}/releases/download/${GLIBC_VERSION}/${pkg}.apk -o /tmp/${pkg}.apk; done && \\
apk add /tmp/*.apk && \\
rm -v /tmp/*.apk && \\
( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) && \\
echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh && \\
/usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib && \\
mkdir /opt && \\
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" -o /tmp/java.tar.gz \\
http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/1961070e4c9b4e26a04e7f5a083f551e/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz && \\
JAVA_PACKAGE_SHA256=$(curl -sSL https://www.oracle.com/webfolder/s/digest/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}checksum.html | grep -E "${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64\\.tar\\.gz" | grep -Eo '(sha256: )[^<]+' | cut -d: -f2 | xargs) && \\
echo "${JAVA_PACKAGE_SHA256} /tmp/java.tar.gz" > /tmp/java.tar.gz.sha256 && \\
sha256sum -c /tmp/java.tar.gz.sha256 && \\
gunzip /tmp/java.tar.gz && \\
tar -C /opt -xf /tmp/java.tar && \\
ln -s /opt/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR} /opt/jdk && \\
if [ "${JAVA_JCE}" == "unlimited" ]; then echo "Installing Unlimited JCE policy" >&2 && \\
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" -o /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip \\
http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION_MAJOR}/jce_policy-${JAVA_VERSION_MAJOR}.zip && \\
cd /tmp && unzip /tmp/jce_policy-${JAVA_VERSION_MAJOR}.zip && \\
cp -v /tmp/UnlimitedJCEPolicyJDK8/*.jar /opt/jdk/jre/lib/security; \\
fi && \\
sed -i s/#networkaddress.cache.ttl=-1/networkaddress.cache.ttl=10/ $JAVA_HOME/jre/lib/security/java.security && \\
apk del curl glibc-i18n && \\
rm -rf /opt/jdk/*src.zip \\
/opt/jdk/lib/missioncontrol \\
/opt/jdk/lib/visualvm \\
/opt/jdk/lib/*javafx* \\
/opt/jdk/jre/plugin \\
/opt/jdk/jre/bin/javaws \\
/opt/jdk/jre/bin/jjs \\
/opt/jdk/jre/bin/orbd \\
/opt/jdk/jre/bin/pack200 \\
/opt/jdk/jre/bin/policytool \\
/opt/jdk/jre/bin/rmid \\
/opt/jdk/jre/bin/rmiregistry \\
/opt/jdk/jre/bin/servertool \\
/opt/jdk/jre/bin/tnameserv \\
/opt/jdk/jre/bin/unpack200 \\
/opt/jdk/jre/lib/javaws.jar \\
/opt/jdk/jre/lib/deploy* \\
/opt/jdk/jre/lib/desktop \\
/opt/jdk/jre/lib/*javafx* \\
/opt/jdk/jre/lib/*jfx* \\
/opt/jdk/jre/lib/amd64/libdecora_sse.so \\
/opt/jdk/jre/lib/amd64/libprism_*.so \\
/opt/jdk/jre/lib/amd64/libfxplugins.so \\
/opt/jdk/jre/lib/amd64/libglass.so \\
/opt/jdk/jre/lib/amd64/libgstreamer-lite.so \\
/opt/jdk/jre/lib/amd64/libjavafx*.so \\
/opt/jdk/jre/lib/amd64/libjfx*.so \\
/opt/jdk/jre/lib/ext/jfxrt.jar \\
/opt/jdk/jre/lib/ext/nashorn.jar \\
/opt/jdk/jre/lib/oblique-fonts \\
/opt/jdk/jre/lib/plugin.jar \\
/tmp/* /var/cache/apk/* && \\
echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf
# EOF
[root@test ~]# docker build -t hub.linuxeye.com/library/alpine-java:latest . #进入行dockerfile目录
以上是关于linux12企业实战 -- 06alpine Linux简介alpine制作jdk镜像jre镜像 Alpine 命令的主要内容,如果未能解决你的问题,请参考以下文章
linux12企业实战 -- 32haproxy2.0.12