1、安装Docker
参考文档:
2、Java的Docker镜像
镜像包含Java运行时(JRE)和Java开发工具包(JDK),方便地打包成独立的Docker标记。获取Java的docker镜像,有两种方式,一种是通过docker pull命令获取,另一种是通过Dockerfile文件创建,具体如下,
1)使用docker pull命令
使用docker pull命令获取https://hub.docker.com/中存储公共镜像,如下,
docker pull frolvlad/alpine-java:jdk8-slim
注意:使用docker run命令时,如果镜像本地不存会自动调用docker pull获取镜像。
2)使用Dockerfile文件创建
Dockerfile文件:
FROM frolvlad/alpine-glibc:alpine-3.9
ENV JAVA_VERSION=8 \
JAVA_UPDATE=202 \
JAVA_BUILD=08 \
JAVA_PATH=1961070e4c9b4e26a04e7f5a083f551e \
JAVA_HOME="/usr/lib/jvm/default-jvm"
RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates unzip && \
cd "/tmp" && \
wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION}u${JAVA_UPDATE}-b${JAVA_BUILD}/${JAVA_PAT..." && \
tar -xzf "jdk-${JAVA_VERSION}u${JAVA_UPDATE}-linux-x64.tar.gz" && \
mkdir -p "/usr/lib/jvm" && \
mv "/tmp/jdk1.${JAVA_VERSION}.0_${JAVA_UPDATE}" "/usr/lib/jvm/java-${JAVA_VERSION}-oracle" && \
ln -s "java-${JAVA_VERSION}-oracle" "$JAVA_HOME" && \
ln -s "$JAVA_HOME/bin/"* "/usr/bin/" && \
rm -rf "$JAVA_HOME/"*src.zip && \
rm -rf "$JAVA_HOME/lib/missioncontrol" \
"$JAVA_HOME/lib/visualvm" \
"$JAVA_HOME/lib/"*javafx* \
"$JAVA_HOME/jre/lib/plugin.jar" \
"$JAVA_HOME/jre/lib/ext/jfxrt.jar" \
"$JAVA_HOME/jre/bin/javaws" \
"$JAVA_HOME/jre/lib/javaws.jar" \
"$JAVA_HOME/jre/lib/desktop" \
"$JAVA_HOME/jre/plugin" \
"$JAVA_HOME/jre/lib/"deploy* \
"$JAVA_HOME/jre/lib/"*javafx* \
"$JAVA_HOME/jre/lib/"*jfx* \
"$JAVA_HOME/jre/lib/amd64/libdecora_sse.so" \
"$JAVA_HOME/jre/lib/amd64/"libprism_*.so \
"$JAVA_HOME/jre/lib/amd64/libfxplugins.so" \
"$JAVA_HOME/jre/lib/amd64/libglass.so" \
"$JAVA_HOME/jre/lib/amd64/libgstreamer-lite.so" \
"$JAVA_HOME/jre/lib/amd64/"libjavafx*.so \
"$JAVA_HOME/jre/lib/amd64/"libjfx*.so && \
rm -rf "$JAVA_HOME/jre/bin/jjs" \
"$JAVA_HOME/jre/bin/keytool" \
"$JAVA_HOME/jre/bin/orbd" \
"$JAVA_HOME/jre/bin/pack200" \
"$JAVA_HOME/jre/bin/policytool" \
"$JAVA_HOME/jre/bin/rmid" \
"$JAVA_HOME/jre/bin/rmiregistry" \
"$JAVA_HOME/jre/bin/servertool" \
"$JAVA_HOME/jre/bin/tnameserv" \
"$JAVA_HOME/jre/bin/unpack200" \
"$JAVA_HOME/jre/lib/ext/nashorn.jar" \
"$JAVA_HOME/jre/lib/jfr.jar" \
"$JAVA_HOME/jre/lib/jfr" \
"$JAVA_HOME/jre/lib/oblique-fonts" && \
wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
"http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION}/jce_policy-${JAVA_VERSION}.zip" && \
unzip -jo -d "${JAVA_HOME}/jre/lib/security" "jce_policy-${JAVA_VERSION}.zip" && \
rm "${JAVA_HOME}/jre/lib/security/README.txt" && \
apk del build-dependencies && \
rm "/tmp/"* && \
\
echo 'public class Main { public static void main(String[] args) { System.out.println("Java code is running fine!"); } }' > Main.java && \
javac Main.java && \
java Main && \
rm -r "/tmp/"*生成本地镜像:
docker build -t cjavapy/alpine-java:jdk8-slim .
3、Java的Docker容器
创建容器可以使用https://hub.docker.com/上的frolvlad/alpine-java镜像,也可以使用上面我们通过Dockerfile文件创建的本地镜像。
1)使用frolvlad/alpine-java镜像
$ echo 'public class Main { public static void main(String[] args) { System.out.println("Hello World"); } }' > Main.java
$ docker run --rm -v "$(pwd)":/mnt --workdir /mnt frolvlad/alpine-java:jdk8-slim sh -c "javac Main.java && java Main"
2)使用cjavapy/alpine-java镜像
$ echo 'public class Main { public static void main(String[] args) { System.out.println("Hello World"); } }' > Main.java
$ docker run --rm -v "$(pwd)":/mnt --workdir /mnt cjavapy/alpine-java:jdk8-slim sh -c "javac Main.java && java Main"相关文档: