gpt4 book ai didi

python - Docker 和 Conda : Differences when building the same container on Mac and on Ubuntu

转载 作者:行者123 更新时间:2023-12-01 02:05:39 24 4
gpt4 key购买 nike

我使用 Docker 构建一个 Python 容器,目的是在多台机器上拥有可重现的环境,这些机器是一堆开发 Macbook 和多台 AWS EC2 服务器。

容器基于continuumio/miniconda3,即Dockerfile以

开头
FROM continuumio/miniconda3

几天前在 Ubuntu 上,Docker 文件中的 conda installconda Upgrade 命令提示新的 Conda 版本 (4.11)可用:

==> WARNING: A newer version of conda exists. <==
current version: 4.4.10
latest version: 4.4.11

Please update conda by running

$ conda update -n base conda

如果我忽略这一点,软件包安装将退出并出现错误:

Downloading and Extracting Packages
The command '/bin/sh -c conda install -y pandas=0.22.0 matplotlib
scikit-learn=0.19.1 pathos lazy openpyxl pytables dill pydro psycopg2
sqlalchemy pyarrow arrow-cpp parquet-cpp scipy tensorflow keras
xgboost' returned a non-zero code: 1

当我将此 conda update... 添加到 Docker 文件时,一切又恢复正常了。

然而,真正令人烦恼的是,在 Ubuntu 中运行的更新在 Mac Docker 上不起作用。我收到以下错误:

CondaEnvironmentNotFoundError: Could not find environment: base .
You can list all discoverable environments with `conda info --envs`.

请注意,当我docker构建在Ubuntu机器上运行的相同Docker文件时,我收到了这个错误,这从一开始就破坏了使用Docker的全部意义。在 Mac 上,旧版本的文件(没有 conda update -n base conda)仍然可以正常运行并安装所有软件包。

Docker/Conda 专家有什么想法吗?

编辑:这是完整的 Dockerfile(在 Ubuntu 中运行的文件):

# Use an official Python runtime as a parent image
FROM continuumio/miniconda3

WORKDIR /app/dev/predictive.analytics

RUN apt-get update; \
apt-get install -y gcc tmux htop

RUN conda update -y -n base conda

RUN conda config --add channels babbel; \
conda config --add channels conda-forge;

RUN conda install -y pandas=0.22.0 matplotlib scikit-learn=0.19.1 pathos lazy openpyxl pytables dill pydro psycopg2 sqlalchemy pyarrow arrow-cpp parquet-cpp scipy tensorflow keras xgboost
RUN pip install recordclass sultan
RUN conda upgrade -y python

ENV DATA_DIR /host/data
ENV PYTHONPATH /host/predictive.analytics/python
ENV PATH="/host/predictive.analytics:${PATH}"

最佳答案

也许您在其中一台构建机器上使用过时的 miniconda,请尝试执行 docker build --pull --no-cache

Docker 不一定从存储库中提取最新的镜像,因此除非您执行 --pull,否则您的某些计算机可能会使用过时的基础镜像开始构建。

关于python - Docker 和 Conda : Differences when building the same container on Mac and on Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49106336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com