在Docker中找不到apt-get

时间:2019-04-17 21:43:35

标签: dockerfile

我有这个Dockerfile:

FROM python:3.6-alpine
FROM ubuntu
FROM alpine

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev
RUN apt-get update && apt-get install -y python-pip

WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "main.py"]

并且抛出错误/bin/sh: apt-get: not found。 我以为apt-get软件包是我要使用的Ubuntu映像的一部分 第二行,但它给了我这个错误。

我该如何解决?

4 个答案:

答案 0 :(得分:1)

您可以使用 apk 命令修复它。 enter image description here apt-get 不起作用,因为活动的 Linux 发行版是 alpine 并且没有 apt-get 命令。

答案 1 :(得分:0)

正如tkausl所说:您只能使用一个基本映像(一个FROM)。

alpine的软件包管理器是apk而不是apt-get。您必须使用apk来安装软件包。但是,点子已经可用。

Dockerfile应该工作:

FROM python:3.6-alpine

RUN apk update && \
    apk add --virtual build-deps gcc python-dev musl-dev

WORKDIR /app
ADD . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "main.py"]

答案 2 :(得分:0)

您使用的图像最有可能是Alpine, 所以你不能使用apt-get 您可以使用Ubuntu的软件包管理器。

您可以使用 client_credentialsapk update

答案 3 :(得分:0)

单个 FROM 中可以使用多个 Dockerfile 行。

discussionMulti stage tutorial

使用Python Alpine,加上Ubuntu,再加上Ubuntu,大概是多余的。 Python Alpine 应该足够了,因为它内部使用了 Alpine。

我遇到了类似的问题,不是 apk 而是 apt-get

FROM node:14

FROM jekyll/jekyll

RUN apt-get update
RUN apt-get install -y \
  sqlite

错误:

/bin/sh: apt-get: not found

如果我改变了顺序,那么它就起作用了。

FROM node:14

RUN apt-get update
RUN apt-get install -y \
  sqlite

FROM jekyll/jekyll

请注意,正如我在上面添加的第一个链接,多个 FROM 可能会作为一项功能从 Docker 中删除。