Skip to content

快速参考

  • 由……维护
    Tianon(来自 Docker 社区),在 Chet 的支持下(来自 Bash 上游)

  • 何处获取帮助:
    Docker 社区 Slack、服务器故障、Unix & Linux 或 Stack Overflow

支持的标签及相应的 Dockerfile 链接

快速参考(续)

什么是 Bash?

Bash 是 GNU 项目的 Bourne Again SHell,是 IEEE POSIX 和开放组 shell 规范的完整实现,具有交互式命令行编辑、在支持它的架构上的作业控制、类似 csh 的特性(如历史替换和大括号扩展)以及大量其他特性。

tiswww.case.edu/php/chet/bash/bashtop.html

logo

如何使用此图像

此镜像针对的主要用例是在你的主要发行版更新软件包之前测试更新的 Bash 版本的新功能,以及针对不同的 Bash 版本测试 shell 脚本以确保兼容性。可能还有其他有趣的用例,但这些是最初创建该镜像要解决的主要两个用例!

注释

关于此图像,有一些重要的主要事项需要注意:

  1. Bash 本身安装在 /usr/local/bin/bash ,而不是 /bin/bash ,所以推荐的 shebang 是 #!/usr/bin/env bash ,而不是 #!/bin/bash (或者明确地通过 bash /.../script.sh 运行你的脚本,而不是让 shebang 自动调用 Bash)。该镜像不包括 /bin/bash ,但如果通过镜像中包含的包管理器安装它,该包将安装到 /bin/bash 并可能导致混淆(尽管 /usr/local/bin$PATH 中位于 /bin 之前,所以只要始终一致地使用纯 bash/usr/bin/env ,镜像提供的 Bash 将被优先使用)。

  2. Bash 是唯一包含的内容,所以如果你的脚本依赖于外部工具(例如 jq ),那么这些将需要手动添加(例如通过 apk add --no-cache jq )。

交互式 shell

$ docker run -it --rm bash:4.4
bash-4.4# which bash
/usr/local/bin/bash
bash-4.4# echo $BASH_VERSION
4.4.0(1)-release

通过绑定挂载来测试脚本

$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:4.4 bash /script.sh
...
$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:3.2 bash /script.sh
...

通过 Dockerfile 测试脚本

FROM bash:4.4

COPY script.sh /

CMD ["bash", "/script.sh"]

然后,构建并运行 Docker 镜像:

$ docker build -t my-bash-app .
...
$ docker run -it --rm --name my-running-app my-bash-app
...

许可证

Bash 是自由软件,根据 GNU 通用公共许可证第 3 版的条款进行分发。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可证信息可能会在 repo-info 存储库的 bash/ 目录中找到。

对于任何预构建镜像的使用,镜像用户有责任确保对此镜像的任何使用都符合其中包含的所有软件的任何相关许可证。