apk 安装包在容器中不可用

apk installed package not available in container

我正在使用 alpine linux 构建图像,如下所示:

FROM alpine:3.7

RUN apk update \
apk upgrade \
apk add bash

CMD ["sh","ls"]

我期待 bash 在容器中可用,但是当我 运行 它找不到 bash

docker run -it --rm tmp:latest /bin/sh
/ # bash
/bin/sh: bash: not found

如果有人能帮助我理解为什么它不可用,我们将不胜感激!

尝试在每个 apk 命令后添加 &&,如下面的 Dockerfile。当 docker 构建您的容器时,您原来的 RUN 行扩展为单个命令 apk update apk upgrade apk add bash 而不是单独的命令。因此,当您构建图像时,apk add bash 命令不正确 运行。

FROM alpine:3.7

RUN apk update && \
apk upgrade && \
apk add bash

CMD ["sh","ls"]

您应该将单独的命令与 && 结合使用,这样如果一个失败,将在构建映像时报告。