dockerfile错误日志(pip安装源)

2021-09-23  本文已影响0人  逍遥_yjz

docker -基于dockerfile自制镜像及其运行容器等报错集合,当然也包含直接拉取镜像日志

1. Dockerfile更换pip安装源

首先Dockerfile使用的centos7.5.1804作为基础镜像 FROM centos:centos7.5.1804,然后安装Python3.6.5。

安装第三方包是默认走了这个源,https://files.pythonhosted.org/packages,编译用时太久。

修改成国内的源:

第一种方法:

RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements2.txt

第二种方法:

未换源:

pip3 install numpy

换成阿里云的源

pip3 install -i http://mirrors.aliyun.com/pypi/simple/ numpy --trusted-host mirrors.aliyun.com

2. anaconda安装TensorFlow版本

自定dockerfile文件

FROM purposefly/anapip
WORKDIR /app
COPY . /app
RUN pip install tensorflow==1.12.0
。。。。

运行报错,没有这个版本,会提示你去搜索有哪些版本

anaconda search -t conda tensorflow

2.1 第一种方法

首先在Linux中,第一步直接拉取一个anaconda镜像,运行生成容器,在容器内部使用以下命令:

anaconda search -t conda tensorflow

[图片上传失败...(image-41433c-1632399984641)]

然后,第二步找到自己安装环境对应的最新TensorFlow后,然后查看安装命令

安装anaconda/tensorflow具体操作命令:

anaconda show anaconda/tensorflow
(base) root@e2c332ba5966:/# anaconda show anaconda/tensorflow
Using Anaconda API: https://api.anaconda.org
Name:    tensorflow
Summary: TensorFlow is a machine learning library.
Access:  public
Package Types:  conda
Versions:
   + 0.10.0rc0
   + 1.0.1
   + 1.1.0
   + 1.2.1
   + 1.3.0
   + 1.4.1
   + 1.5.0
   + 1.6.0
   + 1.7.0
   + 1.7.1
   + 1.8.0
   + 1.9.0
   + 1.10.0
   + 1.11.0
   + 1.12.0
   + 1.13.1
   + 1.14.0
   + 2.0.0
   + 1.15.0
   + 2.1.0
   + 2.2.0
   + 2.3.0
   + 2.4.1
   + 2.5.0
   + 2.6.0

To install this package with conda run:
     conda install --channel https://conda.anaconda.org/anaconda tensorflow

第三步第二步会提供一个下载地址,使用下面命令就可安装新版本tensorflow

conda install --channel https://conda.anaconda.org/anaconda tensorflow

第四步:将命令放入到dockerfile文件中

RUN conda install --channel https://conda.anaconda.org/anaconda tensorflow

2.2 第二种方法

打开网址 https://anaconda.org/ ,搜索 TensorFlow,发现各种版本

假如点击 conda-forge / tensorflow 2.4.3 ,就会发现安装方法

如果是win

3. RUN 时版本不匹配

报错:

ERROR: Could not find a version that satisfies the requirement RUN (from versions: 0.1, 0.2)

原因分析:

翻译->

错误:找不到满足运行要求的版本(来自版本:0.1、0.2)

大概的问题就是安装numpy版本过高。

解决方法:

卸载numpy,安装低版本numpy==1.10.0

4. yum 安装加 -y

报错

yum load-transaction /tmp/yum_save_tx.2021-09-22.11-11.hmf_D6.yumtx

原因分析:

PS:我是在Dockerfile里设置,然后进入镜像手动测试,Dockerfile报错如下:

Is this ok [y/d/N]: Exiting on user command
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2018-02-01.02-10.O1ZlZ_.yumtx
The command '/bin/sh -c yum update && yum install 安装包' returned a non-zero code: 1

命令里是yum install,但是还是需要选择Y/N没有自动执行

解决方法:

在命令里加 -y

RUN yum install -y libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false

还可以将 -y 加到命令的最后面

5. dockerfile 更新pip版本

报错:

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-buil

原因分析:

出错的原因应该是pip的版本太老

解决方法:

更新版本就可以啦,如下:

RUN /usr/bin/python3  -m pip install --upgrade pip

6. ImageAI 加载模型的时编码utf-8问题

报错:

在keras源码中1004行,编码问题

AttributeError: 'str' object has no attribute 'decode'

问题分析:

在原来的

/usr/local/python3.6/lib/python3.6/site-packages/keras/engine/saving.py  1004 line

original_keras_version = f.attrs['keras_version'].decode('utf8')
original_backend = f.attrs['backend'].decode('utf8')

解决方法:

修改代码

if 'keras_version' in f.attrs:
    original_keras_version = f.attrs['keras_version'].encode('utf-8').decode('utf8')
else:
    original_keras_version = '1'
if 'backend' in f.attrs:
    original_backend = f.attrs['backend'].encode('utf-8').decode('utf8')

7. anaconda 创建环境 报错

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.continuum.i

解决方法:

配置清华源

RUN conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ 
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
RUN conda config --set show_channel_urls yes

win10 conda 换源

8. dockerfile中运行conda更新时出现问题

运行

RUN conda update conda

报错:

dockerfile /bin/sh: conda: not found The command '/bin/sh -c conda update co

解决方法:

在Dockerfile中执行anaconda之前,您必须在构建期间使用ENV变量将anaconda添加到PATH.

RUN bash Anaconda3-2018.12-Linux-x86_64.sh -b && \
    echo "export PATH="/root/anaconda3/bin:$PATH"" >> ~/.bashrc && \
    /bin/bash -c "source ~/.bashrc"
ENV PATH /root/anaconda3/bin:$PATH
RUN conda update --all

在.bashrc中更新PATH将使在使用docker run运行时可以在容器内调用conda,但无法在docker文件中的其他RUN语句中调用。总体来说,基于dockerfile生成镜像时,无法使用。

也可参考下面文章

conda: command not found解决办法

上一篇下一篇

猜你喜欢

热点阅读