为什么在Dockerfile构建期间apt-get退出而没有错误?

时间:2017-05-08 01:47:59

标签: docker dockerfile apt-get

出于某种原因,如果没有停止进程并且没有提供错误,我就无法完成docker build。我用谷歌搜索过,似乎没有人有同样的问题。

我正在使用的Dockerfile配置的第一个(也是显着的)部分:

FROM java:8-jre

ENV DEBIAN_FRONTEND noninteractive

# Install needed packages
RUN apt-get update
RUN apt-get install -y \
    cron

我用来执行构建的命令(build.cmd):

@ECHO OFF

docker --debug --log-level debug build . ^
    --build-arg http_proxy=%http_proxy% ^
    --build-arg https_proxy=%https_proxy% ^
    --build-arg no_proxy=%no_proxy% ^
    --tag "bravura/jfrog-mission-control:latest" ^
    %*

运行它的结果:

Sending build context to Docker daemon  133.9MB
Step 1/7 : FROM java:8-jre
 ---> e44d62cf8862
Step 2/7 : ENV DEBIAN_FRONTEND noninteractive
 ---> Using cache
 ---> f30e6ab20920
Step 3/7 : RUN apt-get update
 ---> Running in 677bd445e48c
Get:1 http://security.debian.org jessie/updates InRelease [63.1 kB]
Get:2 http://security.debian.org jessie/updates/main amd64 Packages [508 kB]
Ign http://deb.debian.org jessie InRelease
Get:3 http://deb.debian.org jessie-updates InRelease [145 kB]
Get:4 http://deb.debian.org jessie-backports InRelease [166 kB]
Get:5 http://deb.debian.org jessie Release.gpg [2373 B]
Get:6 http://deb.debian.org jessie Release [148 kB]
Get:7 http://deb.debian.org jessie-updates/main amd64 Packages [17.6 kB]
Get:8 http://deb.debian.org jessie-backports/main amd64 Packages [1150 kB]
Get:9 http://deb.debian.org jessie/main amd64 Packages [9065 kB]
Fetched 11.3 MB in 6s (1829 kB/s)
Reading package lists...
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

这是最重要的一个:通过运行docker run -it --rm java:8-jre /bin/bash在shell中运行相同的命令集非常合适。

另一个有趣的地方:将两个命令连接在一起(使用&&)将退出延迟到两次执行结束。实际上,实际上没有产生任何错误,因此在末尾添加额外的命令就可以了(例如apt-get update && apt-get install -y cron && echo "Done!"

任何帮助甚至可以确定报告问题的位置将不胜感激。

更新:就像这些事情的方式一样,我想在发布此内容后立即查看服务日志。找到了以下可能指向正确方向的花絮:

[13:50:31.818][ApiProxy       ][Info   ] error copying response body from Docker:  unexpected EOF
[13:50:31.818][ApiProxy       ][Info   ] error closing response body from Docker:  unexpected EOF
然而,仍然不知道这意味着什么。可能只是另一种症状,而不是原因。

更新:再次运行构建以仔细检查已提交的响应,并且无需更改我的Dockerfile,现在一切都运行良好。一个可能的选择是在最后一次更新(我今天安装)中默默地修复了该问题。我没有时间来恢复和重新测试,所以这就是它,直到我再次遇到问题,或者其他人得到同样的事情。

1 个答案:

答案 0 :(得分:0)

意外的EOF(文件结束)。你似乎忘记了RUN命令结束时的“\”。

RUN apt-get update && apt-get install -y cron && echo "Done!" \

RUN apt-get update && \
    apt-get install -y cron && \
    echo "Done!" \