谁能告诉我 docker 文件中的问题是什么?
can anyone let me know what is the issue in my docker file?
我需要一个容器 运行 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
使用 Docker 文件,我能够成功构建映像,并且我已将其推送到我在 hub.docker.com
中的帐户
但是当我 运行 尝试使用以下命令 运行 容器时,容器不是 运行ning.
我分析了 2 个多小时的根本原因,但还是找不到问题。
我知道我遗漏了一些愚蠢的东西,任何人都可以看看并指出我正在做的错误吗?
提前致谢
您没有定义 ENTRYPOINT 或 CMD。
一些有用的链接:
- What is the difference between CMD and ENTRYPOINT in a Dockerfile?
- https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/
- https://docs.docker.com/engine/reference/builder/#known-issues-run
您的 Dockerfile 缺少 ENTRYPOINT 或 CMD 指令。他们在启动容器时定义了什么命令运行。
我需要一个容器 运行 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
使用 Docker 文件,我能够成功构建映像,并且我已将其推送到我在 hub.docker.com
中的帐户但是当我 运行 尝试使用以下命令 运行 容器时,容器不是 运行ning.
我分析了 2 个多小时的根本原因,但还是找不到问题。
我知道我遗漏了一些愚蠢的东西,任何人都可以看看并指出我正在做的错误吗?
提前致谢
您没有定义 ENTRYPOINT 或 CMD。
一些有用的链接:
- What is the difference between CMD and ENTRYPOINT in a Dockerfile?
- https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/
- https://docs.docker.com/engine/reference/builder/#known-issues-run
您的 Dockerfile 缺少 ENTRYPOINT 或 CMD 指令。他们在启动容器时定义了什么命令运行。