【问题标题】:How install java to ubuntu on docker?如何在docker上安装java到ubuntu?
【发布时间】:2016-11-24 12:56:42
【问题描述】:

我尝试使用 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 版本?

【问题讨论】:

  • 您是否尝试像使用常规虚拟机一样使用 Docker 容器?这不是它的工作原理。你应该写一个Dockerfile,它从你想要的基本 Ubuntu 映像开始,安装 Java,在你的应用程序中复制并设置它运行。
  • @jonrsharpe 好的。假设我创建了一个文件 docker。那我用它做什么?我想是这样的——我运行 docker。安装所有需要的程序(java、db、一些实用程序)。测试它是如何工作的。如果一切顺利,那么我创建一个图像。然后我将该图像安装在另一台计算机上的另一个 docker 中。
  • 在 Docker 中,数据不会保留在容器中,除非它与映射到文件系统的卷相关联。
  • 那我不明白它是如何工作的
  • 您是否考虑过阅读introductory tutorial 或文档(例如Dockerfile reference)?您提供一个步骤列表,告诉 Docker 如何构建您想要的容器,然后它很容易重复,而不必在运行的机器上设置它。参见例如github.com/textbook/flash/blob/master/Dockerfile,来自我自己的一个项目。

标签: java linux ubuntu docker


【解决方案1】:

正如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/

【讨论】:

  • 在某些图像中您可能需要创建目录mkdir -p /usr/share/man/man1
【解决方案2】:

为什么不使用官方的 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 提供的良好链接

【讨论】:

【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    你必须在安装 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" 的新图像。

    猜你喜欢
    • 2022-09-27
    • 2018-09-05
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2017-02-08
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多