当前位置:   article > 正文

Docker - Dockerfile依赖各个linux版本的差异_docker openjdk1.8 alpine 版本有什么区别

docker openjdk1.8 alpine 版本有什么区别

     前面尝试使用基础依赖镜像java:8(FROM java:8)直接构建java springboot项目镜像,发现一个简单的REST接口的springboot服务,生成的镜像竟然高达667M;

  1. REPOSITORY TAG IMAGE ID CREATED SIZE
  2. docker.io/http-server v2.0.0 bed3abdf0002 6 days ago 667 MB
  3. docker.io/java 8 d23bdf5b1b1b 2 years ago 643 MB

     当然了,我们依赖的这个java:8本身就有643M,而且这个基础镜像做成的容器里面,要啥啥没有,没有vi,没有vim,没有yum,没有curl 。。。 。。。

     于是我就尝试在Github上参考了几个使用各种linux版本制作的java基础镜像,

  1. java.sh
  2. export JAVA_HOME=/usr

1、java_alpine  (openjdk version "1.8.0_212")

  1. FROM alpine:latest
  2. MAINTAINER from Github
  3. LABEL Description="Alpine Java (OpenJDK)"
  4. ARG JAVA_VERSION=8
  5. ARG JAVA_RELEASE=JDK
  6. RUN set -euxo pipefail && \
  7. pkg="openjdk$JAVA_VERSION" && \
  8. if [ "$JAVA_RELEASE" != "JDK" ]; then \
  9. pkg="$pkg-jre"; \
  10. fi && \
  11. apk add --no-cache $pkg
  12. COPY profile.d/java.sh /etc/profile.d/
  13. ENV JAVA_HOME=/usr
  14. CMD /bin/sh

 做成的镜像有105M (有vi,无vim,无apt-get)

alpine_java8         latest              da4060d79e60        47 hours ago        105 MB

2、centos_java8 (openjdk version "1.8.0_222")

  1. FROM centos:latest
  2. MAINTAINER from Github
  3. LABEL Description="Java + CentOS (OpenJDK)"
  4. ARG JAVA_VERSION=8
  5. ARG JAVA_RELEASE=JDK
  6. RUN set -euxo pipefail && \
  7. pkg="java-1.$JAVA_VERSION.0-openjdk" && \
  8. if [ "$JAVA_RELEASE" = "JDK" ]; then \
  9. pkg="$pkg-devel"; \
  10. else \
  11. pkg="$pkg-headless"; \
  12. fi; \
  13. yum install -y "$pkg" && \
  14. yum clean all && \
  15. rm -rf /var/cache/yum
  16. COPY profile.d/java.sh /etc/profile.d/
  17. ENV JAVA_HOME=/usr
  18. CMD /bin/bash

 做成的镜像有455M (有vi,无vim,无apt-get,有yum,有curl)

centos_java8         latest              b8b426a4903f        2 days ago          455 MB

3、java_debian  (openjdk version "1.8.0_222")

  1. FROM debian:stretch
  2. MAINTAINER from Github
  3. LABEL Description="Java + Debian (OpenJDK)"
  4. ENV DEBIAN_FRONTEND noninteractive
  5. ARG JAVA_VERSION=8
  6. ARG JAVA_RELEASE=JRE
  7. RUN bash -c ' \
  8. set -euxo pipefail && \
  9. apt-get update && \
  10. pkg="openjdk-$JAVA_VERSION"; \
  11. if [ "$JAVA_RELEASE" = "JDK" ]; then \
  12. pkg="$pkg-jdk"; \
  13. else \
  14. pkg="$pkg-jre-headless"; \
  15. fi; \
  16. apt-get install -y --no-install-recommends "$pkg" && \
  17. apt-get clean \
  18. '
  19. COPY profile.d/java.sh /etc/profile.d/
  20. ENV JAVA_HOME=/usr
  21. CMD /bin/bash

做成的镜像有269M (无vi,无vim)

debian_java8        latest              dbf6cbd2c40e        47 hours ago        269 MB

4、java_ubuntu (openjdk version "1.8.0_222")

  1. FROM ubuntu:latest
  2. MAINTAINER from Github
  3. LABEL Description="Java + Ubuntu (OpenJDK)"
  4. ENV DEBIAN_FRONTEND noninteractive
  5. ARG JAVA_VERSION=8
  6. ARG JAVA_RELEASE=JDK
  7. RUN bash -c ' \
  8. set -euxo pipefail && \
  9. apt-get update && \
  10. pkg="openjdk-$JAVA_VERSION"; \
  11. if [ "$JAVA_RELEASE" = "JDK" ]; then \
  12. pkg="$pkg-jdk-headless"; \
  13. else \
  14. pkg="$pkg-jre-headless"; \
  15. fi; \
  16. apt-get install -y --no-install-recommends "$pkg" && \
  17. apt-get clean'
  18. COPY profile.d/java.sh /etc/profile.d/
  19. ENV JAVA_HOME=/usr
  20. CMD /bin/bash

做成的镜像有275M (无vi,无vim,有apt-get)

ubuntu_java8         latest              afcc6eea4c50        47 hours ago        275 MB

5、其他

尝试了其他的依赖镜像如:

  1. docker.io/openjdk 8-jre-alpine f7a292bbb70c 3 months ago 84.9 MB
  2. docker.io/openjdk 8-jdk-alpine a3562aa0b991 3 months ago 105 MB

启动简单的java应用是没有问题的,体积小启动快,推荐 好用

启动复杂的java应用的时候,会发生各种不可思议的问题,可能跟缺少一下必要的系统依赖有关系,需要关注这一点。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/80802
推荐阅读
相关标签
  

闽ICP备14008679号