如何在docker上安装java到ubuntu?

问题描述 投票:0回答:6

我尝试使用docker。我安装工具 docker 并运行。我下载了 ubuntu 镜像并在 docker 上运行。我都是靠这个link

做的

为了安装 ubuntu,我使用了

docker run -it ubuntu bash

之后我运行这个ubuntu

docker run -i -t ubuntu:latest /bin/bash

开始后我放置了

root@9bca9a2a537d:/#

现在我想安装java并在这个java上启动一些应用程序。

我尝试安装java

root@cf50a6fdfc10:/# apt-get install default-jre

安装后,我尝试运行此命令

java -version
,我看到了

root@2e62f448f783:/# java -version
openjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-0ubuntu4~16.04.1-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)

之后我退出ubuntu

root@2e62f448f783:/# exit

然后再次运行。当 ubuntu 启动时我尝试

root@20cefe55e2eb:/# java -version
bash: java: command not found

如何安装java或启动此java版本?

java linux ubuntu docker
6个回答
19
投票

正如 paulscott56 所说,您可以在 Dockerfile 中添加这些行:

RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get -y install default-jre-headless && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

https://hub.docker.com/r/pataquets/default-jre-headless/~/dockerfile/


4
投票

为什么不使用官方 Java 镜像,或者 alpine Java,然后放入你的 Dockerfile

FROM java

FROM anapsix/alpine-java

?您已经安装了功能性 Java,可以做任何您想做的事情。

参见

http://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=java&starCount=0

来自 docker hub 的一些 Java

您应该阅读 jonrsharpe 提供的好链接


1
投票

容器是单个包含的实体。当您退出并重新启动它时,您对其所做的所有更改基本上都会丢失。不过他有两种解决方案:

  1. 正确执行此操作,并将 java 添加到 Dockerfile 中的 RUN apt-get 行中, 或
  2. (坏坏坏)添加它并希望你的主机永远不会宕机。

根据您想要的内容(Ubuntu 或运行 Java 应用程序的容器),您应该使用 1 中的方法或创建一个从 Java8 基础映像获取的新 Dockerfile。


0
投票

安装 Ubuntu 后,您必须提交更新的映像。在运行的容器上安装 java 后尝试以下操作:

docker ps -l #get current container ID , let's sat it is "container_id"

然后:

docker commit container_id ubuntu_with_java

它将创建一个名为“ubuntu_with_java”的新图像。


0
投票

以下是如何使用来自 OpenJDK 的 Java 创建 Ubuntu Docker 映像和容器。

首先,您需要创建一个空目录,其中包含名为

Dockerfile
的文件,其内容如下:

# Use Ubuntu as the base image
FROM ubuntu:latest

# Update Ubuntu packages
RUN apt-get update -y

# set JAVA_VERSION
ARG JAVA_VERSION=openjdk-19-jre-headless

# Install Java
RUN apt-get install -y $JAVA_VERSION

# Setup JAVA_HOME
ENV JAVA_HOME /usr/lib/jvm/$JAVA_VERSION

# Set entry point to show Java version and environment variable $JAVA_HOME
ENTRYPOINT ["/bin/bash", "-c", "java --version && echo -n JAVA_HOME= && printenv JAVA_HOME"]

在Dockerfile所在目录下,构建一个名为

ubuntu-java19
的容器,命令为:

docker build . -t ubuntu-java19

运行容器

% docker run ubuntu-java19 
# Out:                    
# openjdk 19.0.2 2023-01-17
# OpenJDK Runtime Environment (build 19.0.2+7-Ubuntu-0ubuntu322.04)
# OpenJDK 64-Bit Server VM (build 19.0.2+7-Ubuntu-0ubuntu322.04, mixed mode, sharing)
# JAVA_HOME=/usr/lib/jvm/openjdk-19-jre-headless

我使用

openjdk-19-jre-headless
作为 ARG(构建过程中可用的变量)。

要查看其他可用的 OpenJDK Java 包,您可以在 Docker 容器内运行

apt list -a openjdk*

% docker run -it --entrypoint /bin/sh  ubuntu-java19

并在容器内发出命令:

# apt list -a openjdk*

-1
投票

如果您想在我的映像上安装 JDK,则可以使用此 Dockerfile,或者您可以使用 java 和 ubuntu 进行多阶段构建。

FROM openjdk:8-jre-alpine

WORKDIR /usr/src/app

CMD ["/bin/bash"]

© www.soinside.com 2019 - 2024. All rights reserved.