Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试在Docker容器中安装Python时出错_Docker - Fatal编程技术网

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

尝试在Docker容器中安装Python时出错,docker,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 ht

我对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${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


解压缩
.xz
文件需要
xz
二进制文件,ubuntu下的
xz utils
软件包提供该二进制文件,因此在解压缩
.xz
文件之前,您必须在图像上安装
xz utils

您可以将此添加到以前的
apt get install
run:

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

这将修复下一次运行表达式时对
tar
的以下调用而不是尝试安装Python,只需从预先安装了Python的基础映像开始,例如
Python:3.6-buster
。这张图片基于Debian Buster,它于2019年发布。由于Ubuntu基于Debian,一切都将非常相似,而且从2019年开始(与2016年的Ubuntu 16.04相反),您将获得更多的最新软件


请参阅更多讨论。

为什么不直接使用python映像?@emix请纠正我的错误,我是从UBUNTU基础映像开始的,所以我也可以使用:from python:3.6.5这就是它的优点:您可以直接使用python映像,并在预装python时对其进行扩展。我建议使用标签版本3或3.6。通过这种方式,如果python被更新,你可以很容易地在将来更新你的图像,例如3.7。你能给我指一些我可以更好地理解它的资源吗?在线上有很多关于Docker如何工作的资源。不要麻烦自己配置一些你能从盒子里得到的东西。