Docker和Conda:在Mac和Ubuntu上构建相同容器的区别

2024-06-16 12:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用todocker构建一个Python容器,目的是在多台机器上创建一个可复制的环境,这些机器是一堆开发macbook和几个awsec2服务器。在

容器基于continuumio/miniconda3,即Dockerfile以

FROM continuumio/miniconda3

几天前,在Ubuntu上,Docker文件中的conda install和{}命令抱怨新的Conda版本(4.11)可用:

^{pr2}$

如果忽略此项,程序包安装将退出并出现错误:

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 build在Ubuntu机器上运行的同一个Docker文件时,我得到了这个错误,这一点从一开始就破坏了使用Docker的整个要点。在Mac上,旧版本的文件(不带conda update -n base conda)仍然可以正常运行并安装所有包。在

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

编辑:以下是完整的Dockerfile(在Ubuntu中工作的Dockerfile):

# 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}"

Tags: install文件dockerrundockerfile机器baseubuntu
1条回答
网友
1楼 · 发布于 2024-06-16 12:33:42

也许您正在某个生成计算机上使用过时的miniconda,请尝试执行docker build pull no-cache。在

Docker不一定要从存储库中提取最新的映像,因此除非您执行拉取操作,否则您的某些计算机可能正在使用过时的基本映像开始构建。在

相关问题 更多 >