如何使用基于Alpine的docker图像的bash?

diu*_*lde 146 bash docker dockerfile alpine-linux

我从openjdk创建了一个docker镜像:8-jdk-alpine但是当我尝试执行简单的命令时,我得到以下错误:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 247

默认情况下,Alpine docker镜像没有安装bash.您需要添加以下命令才能获得bash:

RUN apk update && apk add bash
Run Code Online (Sandbox Code Playgroud)

如果您正在使用Alpine 3.3+那么您可以这样做

RUN apk add --no-cache bash
Run Code Online (Sandbox Code Playgroud)

保持docker图像尺寸小.(感谢@sprkysnrky的评论)

  • 我更喜欢使用 @Yuva 的推荐,使用 `RUN /bin/sh` 而不是 `RUN bin/bash` (7认同)
  • 这完全取决于你,很多人需要“bash”特定功能。 (7认同)
  • 不需要`apk升级'. (4认同)
  • 为什么我应该使用 `--no-cache` 选项? (4认同)
  • @aurelia,不要将下载的应用程序/包保留在缓存中。通常,当您在Linux中使用`apk`/`apt-get`安装应用程序时,它们会先下载该应用程序并安装它,但安装完成后不会将其删除,这会占用存储空间。 (3认同)

Yuv*_*uva 139

尝试使用RUN /bin/sh而不是bash.

  • 但无论如何这是非常有用的评论 - 大多数人都会很好用 - 而且它不需要额外50mb的图像尺寸 (79认同)
  • OP要求bash.sh不是bash. (20认同)
  • 我一直在寻找bash,但是sh也有帮助:) (5认同)
  • 简单直接.大多数时候我们只需要运行糟糕的命令(ls,ps,等等),sh涵盖那些场景.谢谢! (4认同)
  • @kboom的`bash`软件包增加了大约4MB的"alpine:3.8"大小,大概加倍,但仍然远远超过50MB. (4认同)
  • 这应该是评论而不是答案。同时,我同意接受的答案应该包含一条评论,如果可能的话,应该坚持使用“sh”而不是安装“bash”,因为它会增加图像的大小。 (4认同)
  • 我也在寻找 bash 但 sh 做得很好!谢谢! (3认同)
  • @kboom 评论在评论部分。这不是原始问题的答案。 (2认同)
  • 不。它不是。alpine 中的“/bin/sh”实际上是“/bin/busybox”的符号链接。仍然是灰烬 (2认同)

use*_*546 16

RUN /bin/sh -c "apk add --no-cache bash"
Run Code Online (Sandbox Code Playgroud)

为我工作.

  • RUN 命令的开头部分是不必要的。你可以直接写`RUN apk add --no-cache bash` (8认同)

Jam*_*des 14

选项:从 Bash 启动

官方的 bash 镜像基于Alpine,可以避免您每次都需要安装 bash。只需使用

docker pull bash

本文首次发布于 2016 年 10 月 19 日下午 6:43。

选项:使用现有的基础映像

如果您想使用现有的基础映像,同时避免在每个容器启动时安装 bash,那么您可以将其添加到 Dockerfile 中。

# Use openjdk:8-jdk-alpine as the base image
FROM openjdk:8-jdk-alpine

# Install bash package
RUN apk add --no-cache bash
Run Code Online (Sandbox Code Playgroud)

  • 我已经对这个答案投了赞成票 (2认同)

Sah*_*dhi 7

要安装 bash,您可以执行以下操作:

RUN apk add --update bash && rm -rf /var/cache/apk/*
Run Code Online (Sandbox Code Playgroud)

如果您不想为图像添加额外的尺寸,您可以使用alpine 附带的ashsh

参考:https : //github.com/smebberson/docker-alpine/issues/43