尝试在Docker容器中安装Python时出错

时间:2020-01-09 17:30:27

标签: docker

我对Docker相对较新。我有一个要容器化的应用程序。

下面是我的docker文件:

FROM ubuntu:16.04

## ENV Variables
ENV PYTHON_VERSION="3.6.5"

# Update and Install packages
RUN apt-get update -y \
 && apt-get install -y \
 curl \
 wget \
 tar

# Install Python 3.6.5
RUN wget https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tar.xz \
    && tar -xvf Python-${PYTHON_VERSION}.tar.xz \
    && cd Python-${PYTHON_VERSION} \
    && ./configure \
    && make altinstall \
    && cd / \
    && rm -rf Python-${PYTHON_VERSION}

# Install Google Cloud SDK

# Downloading gcloud package
RUN curl https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz > /tmp/google-cloud-sdk.tar.gz

# Installing the package
RUN mkdir -p /usr/local/gcloud \
  && tar -C /usr/local/gcloud -xvf /tmp/google-cloud-sdk.tar.gz \
  && /usr/local/gcloud/google-cloud-sdk/install.sh

# Adding the package path to local
ENV PATH $PATH:/usr/local/gcloud/google-cloud-sdk/bin

我正在尝试安装python3.6.5版本,但收到以下错误。

020-01-09 17:26:13(107 KB / s)-保存了'Python-3.6.5.tar.xz'[17049912/17049912]

tar(子项):xz:无法执行:没有此类文件或目录

tar(子项):错误无法恢复:现在退出

tar:孩子的状态为2

tar:错误无法恢复:现在退出

命令'/ bin / sh -c wget https://www.python.org/ftp/python/ $ {PYTHON_VERSION} / Python-$ {PYTHON_VERSION} .tar.xz && tar -xvf Python-$ {PYTHON_VERSION} .tar.xz && cd Python -$ {PYTHON_VERSION} && ./configure && make altinstall && cd / && rm -rf Python-$ {PYTHON_VERSION}'返回了非零代码:2

2 个答案:

答案 0 :(得分:1)

解压缩.xz文件需要xz二进制文件,它在ubuntu下由软件包xz-utils提供,因此您必须在映像上安装xz-utils,然后再解压缩{ {1}}文件。

您可以将其添加到先前的.xz运行中

apt-get install

这应该在下一个RUN表达式中修复对# Update and Install packages RUN apt-get update -y \ && apt-get install -y \ curl \ wget \ tar \ xz-utils 的以下调用

答案 1 :(得分:0)

与其尝试安装Python,不如从预安装Python的基本映像开始,例如python:3.6-buster。该图像基于2019年发布的Debian Buster。由于Ubuntu基于Debian,所以一切都非常相似,并且由于它来自2019年(与2016年的Ubuntu 16.04相反),您将获得更多最新的软件。

有关更多讨论,请参见https://pythonspeed.com/articles/base-image-python-docker-images/