【问题标题】:How can a Docker image build locally, but not at remote destination?Docker 镜像如何在本地构建,而不是在远程目标?
【发布时间】:2015-04-07 18:56:28
【问题描述】:

我们有一个如下所示的 Dockerfile:

from ubuntu:trusty

RUN apt-get update && apt-get -y upgrade
RUN apt-get install -y build-essential g++ libblas-dev liblapack-dev gfortran python-dev python-pip

RUN pip install --upgrade numpy
RUN pip install --upgrade statsmodels
RUN pip install --upgrade flask

COPY . server

WORKDIR server

EXPOSE 5000

ENTRYPOINT python2 prediction_app.py

在本地,这些步骤可以顺利完成。但是,在我们的远程目标上,此步骤失败:

RUN pip install --upgrade statsmodels

当 pip 尝试删除非空目录时:

Found existing installation: six 1.5.2
  Uninstalling six:
    Successfully uninstalled six
Cleaning up...
Exception:
Traceback (most recent call last):
[... snip many lines ...]
onerror(os.rmdir, path, sys.exc_info())
File "/usr/lib/python2.7/shutil.py", line 254, in rmtree
os.rmdir(path)
OSError: [Errno 39] Directory not empty:...
Storing debug log for failure in /root/.pip/pip.log

两个问题:

  1. 这怎么可能在本地工作而在远程失败?由于它们都是从同一个映像开始的,所以它们不应该以相同的方式失败或以相同的方式成功吗?我试图了解我的心理模型对此有何问题。

  2. 有没有办法查看失败日志?看起来它被转储到了一个不完整的 Docker 映像中,我不知道该怎么做。

【问题讨论】:

  • 不知道有没有关系。由于 statsmodels 没有以 pip 兼容的方式指定依赖项,我建议明确 apt-get 或 pip-install scipy、pandas 和 patsy。
  • @user333700 不幸的是,这不是一个选项,因为可信图像的 scipy 太过时了。
  • 您在本地和远程主机上运行什么操作系统?
  • @KevanAhlquist Ubuntu 14.10 在本地主机上,Ubuntu 14.04.2 LTS 在远程主机上。
  • 主机操作系统与在 docker 容器中执行的命令无关。您可以从 build 创建的最新容器中复制日志文件(您可以使用 docker ps -a 找到它): docker cp :/root/.pip/pip.log ./

标签: python docker


【解决方案1】:

这个问题似乎是由于使用了 docker 覆盖存储后端。

我在这里提出了一个错误:https://github.com/docker/docker/issues/12327

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2018-08-18
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多