主机上的一个Java安装能否管理部署在docker容器中的多个应用程序 让我们考虑一个场景。我有一台服务器。我在主机上安装了Java8。我需要部署4个docker容器,每个容器都有JavaWeb应用程序

主机上的一个Java安装能否管理部署在docker容器中的多个应用程序 让我们考虑一个场景。我有一台服务器。我在主机上安装了Java8。我需要部署4个docker容器,每个容器都有JavaWeb应用程序,docker,Docker,我的问题是,主机服务器上安装的java能否管理docker容器中部署的应用程序,或者我必须在每个容器中安装Java8。 如果我必须在每个容器中安装java,那么VM和容器之间的区别是什么,因为我们还在每个容器中安装OS(最小值) 您的主机是否有Java并不重要 您将需要一个Java docker映像,只需在dockerhub上搜索一些。然后根据该图像构建应用程序,并将图像旋转为容器 您提到了web应用程序,因此必须确保从容器映射的主机端口是唯一的。例如,我认为java容器1到4不能映射到同一主

我的问题是,主机服务器上安装的java能否管理docker容器中部署的应用程序,或者我必须在每个容器中安装Java8。
如果我必须在每个容器中安装java,那么VM和容器之间的区别是什么,因为我们还在每个容器中安装OS(最小值)

您的主机是否有Java并不重要

您将需要一个Java docker映像,只需在dockerhub上搜索一些。然后根据该图像构建应用程序,并将图像旋转为容器

您提到了web应用程序,因此必须确保从容器映射的主机端口是唯一的。例如,我认为java容器1到4不能映射到同一主机端口1234

它必须类似于Java web容器1的端口123映射到主机100,然后容器2的端口123映射到主机端口101

希望这有帮助。

两种情况

  • 您想使用OpenJDK吗

    您可以将所有容器基于官方Java图像,如下所示

    FROM java:8
    ...
    ...
    
  • 您希望使用Oracle Java

    您可以创建Dockerfiles

    FROM  centos:7
    RUN yum update -y && \
    yum install -y wget && \
    wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-linux-x64.rpm" && \
    yum localinstall -y jdk-7u80-linux-x64.rpm && \
    rm -f jdk-7u80-linux-x64.rpm && \
    yum clean all
    
    ENV JAVA_HOME /usr/java/jdk1.7.0_80
    ENV PATH $JAVA_HOME:$PATH
    
    CMD ["/bin/bash"]
    
  • 然后构建基本java映像

        docker build -t my-oracla-java:8 .
    
    然后将所有容器映像都基于java映像

    FROM my-oracla-java:8
    ...
    ...
    

    是的,每个容器中都需要Java。那么,您可以将一个共享JVM安装主机目录装载到每个容器中。但这违背了Docker的宗旨。如果您想依赖于拥有Java的主机,您可能只需要构建jar/war文件。请注意,如果您的所有映像都基于一个已安装JDK的公共映像,那么它们至少会为此共享磁盘空间