【问题标题】:Making an Oracle JDK docker image制作 Oracle JDK docker 镜像
【发布时间】:2018-03-03 12:57:16
【问题描述】:
我正在尝试为 oracle JDK 创建 docker 映像,但我能找到的唯一映像是开放的 JDK。我们的应用程序使用 oracle JDK,因此必须构建 oracle JDK docker 映像。我的问题是是否有任何方法可以从 tar 文件或类似文件构建自定义的 docker 映像。如果可以的话,我会在 docker 文件 FROM arg 中写什么?
【问题讨论】:
标签:
java
docker
openshift
dockerfile
【解决方案1】:
这里有一个Atlassian blog post,它描述了如何构建一个 Oracle JDK docker 容器。
这是一个现有的Oracle JDK image on docker hub 和another。
不过,请注意自述文件中的许可免责声明。我不确定这是否足以绕过Oracle JDK License 中的“重新分发限制”条款。使用他们的 Dockerfile 和博客作为创建自己的基础可能更安全。只需将其放在私人仓库而不是 docker hub 上。
为了完整起见,以下是博文中的 Dockerfile 内容:
# AlpineLinux with a glibc-2.21 and Oracle Java 8
FROM alpine:3.2
MAINTAINER Anastas Dancha [...]
# Install cURL
RUN apk --update add curl ca-certificates tar && \
curl -Ls https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-2.21-r2.apk > /tmp/glibc-2.21-r2.apk && \
apk add --allow-untrusted /tmp/glibc-2.21-r2.apk
# Java Version
ENV JAVA_VERSION_MAJOR 8
ENV JAVA_VERSION_MINOR 45
ENV JAVA_VERSION_BUILD 14
ENV JAVA_PACKAGE jdk
# Download and unarchive Java
RUN mkdir /opt && curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie"\
http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_PACKAGE}-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
| tar -xzf - -C /opt &&\
ln -s /opt/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR} /opt/jdk &&\
rm -rf /opt/jdk/*src.zip \
/opt/jdk/lib/missioncontrol \
/opt/jdk/lib/visualvm \
/opt/jdk/lib/*javafx* \
/opt/jdk/jre/lib/plugin.jar \
/opt/jdk/jre/lib/ext/jfxrt.jar \
/opt/jdk/jre/bin/javaws \
/opt/jdk/jre/lib/javaws.jar \
/opt/jdk/jre/lib/desktop \
/opt/jdk/jre/plugin \
/opt/jdk/jre/lib/deploy* \
/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
# Set environment
ENV JAVA_HOME /opt/jdk
ENV PATH ${PATH}:${JAVA_HOME}/bin