如何在Docker上安装Java到Ubuntu?

11

我尝试使用Docker。我安装了Docker工具并运行它。我下载了Ubuntu映像并在Docker上运行它,所有步骤都是根据此链接进行的。

为了安装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版本?


你是否试图像使用常规虚拟机一样使用Docker容器?这并不是它的实际用法。你应该编写一个Dockerfile,从你想要的基础Ubuntu镜像开始,安装Java,复制你的应用程序并设置其运行。 - jonrsharpe
@jonrsharpe 好的。假设我已经创建了一个名为docker的文件,那么我该怎么做呢?我想这样做 - 运行docker。安装所有需要的程序(Java、数据库、一些工具)。测试它的运行情况。如果一切正常,那么我就创建一个镜像。然后我将该镜像安装在另一台计算机上的另一个docker中。 - user5620472
在Docker中,除非数据与映射到文件系统的卷相关联,否则数据不会在容器中持久存在。 - Samuel Toh
那我不明白它是如何工作的。 - user5620472
1
你考虑过阅读入门教程或文档(例如Dockerfile参考)吗? 你提供一个步骤列表,告诉Docker如何构建所需的容器,然后它很容易重复,而不必在运行中的机器上设置。请参见例如我的一个项目 https://github.com/textbook/flash/blob/master/Dockerfile。 - jonrsharpe
5个回答

18

1
在某些图像中,您可能需要创建目录 mkdir -p /usr/share/man/man1 - Aivar

4

2
如果我已经在使用不同的基础镜像,并且需要添加Java到其中,该怎么办?不可能有两个基础镜像。 - callum
请参见以下有关编程的内容:https://dev59.com/oFwX5IYBdhLWcg3w2SZq 和 VonC 的优秀回答。 - user2915097

1
容器是一个单独的实体,当您退出并重新启动它时,所有对其所做的更改基本上都会丢失。有两种解决方案:
  1. 正确地添加Java到Dockerfile中的RUN apt-get行中。
  2. (非常不好的方法) 添加Java并希望您的主机永远不会关闭。
根据您想要的内容(Ubuntu还是用于运行Java应用程序的容器),您应该使用第一种方法或创建一个新的Dockerfile来获取Java8基础映像。

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"的新图像。


2
通常,最好使用Dockerfiles以记录和可维护的方式来管理您的映像。 - jonrsharpe

-1

如果您想在我的镜像中使用JDK,可以使用此Dockerfile,或者您可以使用带有Ubuntu的Java进行多阶段构建。

FROM openjdk:8-jre-alpine

WORKDIR /usr/src/app

CMD ["/bin/bash"]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接