我尝试使用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版本?
正如 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/
为什么不使用官方 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 提供的好链接
容器是单个包含的实体。当您退出并重新启动它时,您对其所做的所有更改基本上都会丢失。不过他有两种解决方案:
根据您想要的内容(Ubuntu 或运行 Java 应用程序的容器),您应该使用 1 中的方法或创建一个从 Java8 基础映像获取的新 Dockerfile。
安装 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”的新图像。
以下是如何使用来自 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*
如果您想在我的映像上安装 JDK,则可以使用此 Dockerfile,或者您可以使用 java 和 ubuntu 进行多阶段构建。
FROM openjdk:8-jre-alpine
WORKDIR /usr/src/app
CMD ["/bin/bash"]