有人能告诉我docker文件中有什么问题吗?
我需要一个安装了java的容器,我想公开8090端口 这是我为实现这一点而编写的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
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 一些有用的链接:
您的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更改为启动上述服务的命令。