Docker和Conda:在Mac和Ubuntu上构建相同容器时的差异

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker和Conda:在Mac和Ubuntu上构建相同容器时的差异相关的知识,希望对你有一定的参考价值。

我正在使用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 build上运行在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,否则您的某些计算机可能会使用过时的基本映像启动构建。

以上是关于Docker和Conda:在Mac和Ubuntu上构建相同容器时的差异的主要内容,如果未能解决你的问题,请参考以下文章

使用Pip3和conda在mac上安装软件包

基于docker搭建conda深度学习环境(支持GPU加速)

基于docker搭建conda深度学习环境(支持GPU加速)

无法在 Mac 上使用 conda 安装最新的 nodejs

Docker有关GUI软件的界面显示设计

Docker-compose 在 M1 mac 上的 VM (Parallels) 中