让我们考虑一个场景。我有一台服务器。我在主机上安装了Java 8.我需要部署4个拥有java web应用程序的docker容器。
我的问题是,主机服务器上安装的java是否可以在docker容器中管理已部署的应用程序,或者我必须在每个容器中安装java 8。 如果我必须在每个容器中安装java,那么VM和容器之间有什么区别,因为我们还在每个容器中安装OS(最小值)。
答案 0 :(得分:0)
您的主机是否具有Java并不重要。
你需要一个Java docker镜像,只需在dockerhub上搜索一些。然后从该图像构建应用程序并将图像作为容器旋转。
您提到了Web应用程序,因此您必须确保从容器映射的主机端口是唯一的。例如。我相信你不能将java容器#1到#4映射到同一个主机端口1234.
必须像Java Web容器#1的端口123映射到主机100,然后容器#2端口123映射到主机端口101.
希望这有帮助。
答案 1 :(得分:0)
两种情景,
您想使用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
...
...