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"
相关文档: