Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在docker中安装openjdk将删除基本的linux命令_Java_Docker - Fatal编程技术网

Java 在docker中安装openjdk将删除基本的linux命令

Java 在docker中安装openjdk将删除基本的linux命令,java,docker,Java,Docker,我的目标是制作一个包含qt android和android studio工具的docker图像。我为dockerfile选择了like base,而不是安装软件属性common,而是安装构建essential和libgl1-mesa-dev。Java和这些库都已成功安装,但随后,mkdir、ls、cd等基本命令变得无法识别,使docker构建过程返回代码127(未找到命令) 为什么会出现这种情况?我发现如果不在图像的前面进行一些更改,我甚至无法让您的Dockerfile显示问题。但实际上你的问题

我的目标是制作一个包含qt android和android studio工具的docker图像。我为dockerfile选择了like base,而不是安装
软件属性common
,而是安装
构建essential
libgl1-mesa-dev
。Java和这些库都已成功安装,但随后,
mkdir
ls
cd
等基本命令变得无法识别,使docker构建过程返回代码127(未找到命令)


为什么会出现这种情况?

我发现如果不在图像的前面进行一些更改,我甚至无法让您的Dockerfile显示问题。但实际上你的问题在于:

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH JAVA_HOME/bin
ENV CLASSPATH JAVA_HOME/lib/tools.jar
ENV MANPATH JAVA_HOME/man
RUN export JAVA_HOME PATH CLASSPATH MANPATH 
应成为:

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/tools.jar
ENV MANPATH $JAVA_HOME/man
这是因为当您设置路径时,您不应该删除它的当前内容(因此
$PATH:
),并且您希望添加JAVA\u HOME变量的值,而不是文字字符串JAVA\u HOME(因此
$JAVA\u HOME/bin

此外,使用ENV设置的任何内容都不需要导出,因为它可用于图像中的每个进程

我还必须安装一些软件包来添加APT存储库,但我不确定100%,因为这是因为Ubuntu:最新引用的是我的系统上的一个不同的图像(可能你应该考虑使用一个标签,用于你希望使用的特定版本,比如<代码> Ubuntu:XXIAY)。 我还必须安装wget&我纠正了许多您不想安装wget-O-的地方(因为您显然想将文件写入磁盘)

我使用并能够成功构建的完整Dockerfile(我没有测试运行它,因为我不确定预期行为&不说您的语言)是:


如果您还有其他问题,请告诉我,我会尽力回答。

我发现如果不在图像的前面进行一些更改,我甚至无法让您的Dockerfile显示问题。但实际上你的问题在于:

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH JAVA_HOME/bin
ENV CLASSPATH JAVA_HOME/lib/tools.jar
ENV MANPATH JAVA_HOME/man
RUN export JAVA_HOME PATH CLASSPATH MANPATH 
应成为:

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV PATH $PATH:$JAVA_HOME/bin
ENV CLASSPATH $JAVA_HOME/lib/tools.jar
ENV MANPATH $JAVA_HOME/man
这是因为当您设置路径时,您不应该删除它的当前内容(因此
$PATH:
),并且您希望添加JAVA\u HOME变量的值,而不是文字字符串JAVA\u HOME(因此
$JAVA\u HOME/bin

此外,使用ENV设置的任何内容都不需要导出,因为它可用于图像中的每个进程

我还必须安装一些软件包来添加APT存储库,但我不确定100%,因为这是因为Ubuntu:最新引用的是我的系统上的一个不同的图像(可能你应该考虑使用一个标签,用于你希望使用的特定版本,比如<代码> Ubuntu:XXIAY)。 我还必须安装wget&我纠正了许多您不想安装wget-O-的地方(因为您显然想将文件写入磁盘)

我使用并能够成功构建的完整Dockerfile(我没有测试运行它,因为我不确定预期行为&不说您的语言)是:


如果您还有任何问题,请告诉我,我会尽力回答。

您能出示您的Wild Dockerfile吗?您能出示您的Wild Dockerfile吗?非常感谢您的回答,joelnb,现在我已经澄清了。我将测试这些变化并给你们一个反馈。一旦docker构建期间运行GUI的问题偏离了本主题主要问题的主题,我将打开另一个问题。很好的回答。你能在这里用链接评论一下吗?我可能不知道如何回答这个问题,但如果有答案的话,我很想看看答案。当然是的,答案在这里:非常感谢你的回答,joelnb,现在我已经澄清了。我将测试这些变化并给你们一个反馈。一旦docker构建期间运行GUI的问题偏离了本主题主要问题的主题,我将打开另一个问题。很好的回答。你能在这里用链接评论一下吗?我可能不知道如何回答这个问题,但如果有答案的话,我很有兴趣看到答案。当然有,这是: