有人能告诉我docker文件中有什么问题吗?

有人能告诉我docker文件中有什么问题吗?,docker,docker-compose,dockerfile,docker-machine,Docker,Docker Compose,Dockerfile,Docker Machine,我需要一个安装了java的容器,我想公开8090端口 这是我为实现这一点而编写的Docker文件 FROM ubuntu:16.04 ENV DEBIAN_FRONTEND noninteractive ENV VERSION 8 ENV UPDATE 152 ENV BUILD 16 ENV SIG aa0333dd3019491ca4f6ddbe78cdb6d0 ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle # install jr

我需要一个安装了java的容器,我想公开8090端口

这是我为实现这一点而编写的Docker文件

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND noninteractive

ENV VERSION 8
ENV UPDATE 152
ENV BUILD 16
ENV SIG aa0333dd3019491ca4f6ddbe78cdb6d0

ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle

# install jre
RUN apt-get update -qq && \
  apt-get upgrade -qqy --no-install-recommends && \
  apt-get install curl unzip bzip2 -qqy && \
  mkdir -p "${JAVA_HOME}" && \
        curl --silent --location --insecure --junk-session-cookies --retry 3 \
          --header "Cookie: oraclelicense=accept-securebackup-cookie;" \
          http://download.oracle.com/otn-pub/java/jdk/"${VERSION}"u"${UPDATE}"-b"${BUILD}"/"${SIG}"/jre-"${VERSION}"u"${UPDATE}"-linux-x64.tar.gz \
        | tar -xzC "${JAVA_HOME}" --strip-components=1 && \
  apt-get remove --purge --auto-remove -y curl unzip bzip2 && \
  apt-get autoclean && apt-get --purge -y autoremove && \
  rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN update-alternatives --install "/usr/bin/java" "java" "${JAVA_HOME}/bin/java" 1 && \
        update-alternatives --install "/usr/bin/javaws" "javaws" "${JAVA_HOME}/bin/javaws" 1 && \
        update-alternatives --set java "${JAVA_HOME}/bin/java" && \
        update-alternatives --set javaws "${JAVA_HOME}/bin/javaws"

EXPOSE 8090
使用Dockerfile,我成功地构建了映像,并将其推送到了hub.docker.com中的帐户

但是,当我使用下面的命令运行try-to-run容器时,容器没有运行

在分析根本原因的过程中,我伤了头,两个多小时都没能找到问题所在

我知道我错过了一些愚蠢的事情,有人能看一看并指出我犯的错误吗


提前感谢

您没有定义入口点或CMD

一些有用的链接:


您没有定义入口点或CMD

一些有用的链接:


您的Dockerfile缺少入口点或CMD指令。它们定义启动容器时运行的命令


您的Dockerfile缺少入口点或CMD指令。它们定义启动容器时运行的命令


您可以发布用于运行容器的命令吗?并发布您收到的确切错误消息。如果您想要Java,为什么要创建自己的映像?为什么不使用预构建的映像?例如:如果创建自己的链接有某些原因,您可能会感到抱歉,第一个链接已被弃用:@k0pernikus根据您的输入,我尝试使用链接中的图像。docker run——名称为docjavaapp1234 sgrio/javaoracle:jre_8_unlimited。即使这样也没有把我的容器提上来。您能验证iwhather是否适合您吗?您能发布用于运行容器的命令吗?并发布您收到的确切错误消息。如果您想要Java,为什么要创建自己的映像?为什么不使用预构建的映像?例如:如果创建自己的链接有某些原因,您可能会感到抱歉,第一个链接已被弃用:@k0pernikus根据您的输入,我尝试使用链接中的图像。docker run——名称为docjavaapp1234 sgrio/javaoracle:jre_8_unlimited。即使这样也没有把我的容器提上来。你能验证一下iWhather是否适合你吗?感谢samprog的快速响应,我添加了ENTRYPOINT[“/bin/bash”],并再次构建了同样的问题。还有什么问题?只要您使用ENTRYPOINT或CMD指令启动的进程存在,容器就会运行。如果进程停止,则容器停止/bin/bash实际上不是一个持续运行的守护进程或进程。您希望在端口8090上获得什么服务?我建议您将ENTRYPOINT或CMD更改为启动上述服务的命令。感谢samprog的快速响应,我添加了ENTRYPOINT[“/bin/bash”],并再次构建了相同的问题。还有什么问题?只要您使用ENTRYPOINT或CMD指令启动的进程存在,容器就会运行。如果进程停止,则容器停止/bin/bash实际上不是一个持续运行的守护进程或进程。您希望在端口8090上获得什么服务?我建议您将ENTRYPOINT或CMD更改为启动上述服务的命令。