【问题标题】:Docker from image python:3.6 apk-get not fount来自图像 python:3.6 apk-get 的 Docker 未找到
【发布时间】:2019-10-26 06:54:05
【问题描述】:

在我的 docker roject 中,我需要 python:3.6 映像(我不需要 alpinr 版本)。 我的码头文件:

FROM python:3.6
EXPOSE 8000
RUN apk-get add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev
RUN apk-get update && apk-get add postgresql-dev gcc python3-dev musl-dev
...

但是当我构建我的图像时,我得到:

步骤 3/12:运行 apk-get add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev ---> 在 13913a86fd5e 中运行 /bin/sh: 1: apk-get: 未找到

我也尝试用 apk 代替 apk-get 但结果没有改变

有人可以问我如何在这个 python 发行版上安装包?

提前非常感谢

【问题讨论】:

  • 不是 apt-get 吗? (注意 apt 中的 T)
  • 将 apk-get 替换为 apt-get 或仅 apt
  • 如果图像基于 Ubuntu - 使用 apt/apt-get,如果是 Alpine - 使用 apk。包管理器在那里是不同的,当然有不同的命令参数。

标签: python docker apk


【解决方案1】:

apk 是 alpine 上的包管理器。 debian 包管理器名为apt-get

在 docker 文件中使用 apt-get 时,第一个调用应该是 apt-get update,因为 docker 镜像没有任何本地缓存的包库。

debian 和 alpine 的软件包名称也不相同。总之,您的代码应该类似于

FROM python:3.6-buster
RUN apt-get update \
    apt-get install -y \
        make linux-headers-amd64 libffi-dev libjpeg-dev libz-dev \
        postgresql-server-dev-11 gcc python3-dev musl-dev \
    && rm -rf /var/lib/apt/lists/*

【讨论】:

    【解决方案2】:

    如果 dockerfile 是

    FROM python:3.6
    

    然后让我们说构建命令是docker build -t python3.6 .。如果您使用docker run --rm -it python3.6 /bin/bash 登录bash shell 并运行cat /etc/issue,您会发现它正在运行Debian 10。因此,您应该使用apt-getapt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      相关资源
      最近更新 更多