如何在 Mac 上从 Dockerfile 运行 bash 脚本

Posted

技术标签:

【中文标题】如何在 Mac 上从 Dockerfile 运行 bash 脚本【英文标题】:How to run a bash script from a Dockerfile on a Mac 【发布时间】:2022-01-15 13:18:26 【问题描述】:

我正在尝试从 Mac 上的 Docker 映像运行 bash 脚本。这是我的 Dockerfile

FROM bash
ADD app.sh /
ENTRYPOINT ["/bin/bash", "/app.sh"]

错误

docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown.

这是一个创建 Docker 镜像的简单练习,我需要在运行 docker run 时执行 app.sh。

知道我做错了什么吗?

【问题讨论】:

【参考方案1】:

根据您的错误消息,您的 Docker 映像中不存在文件 /bin/bash。这是为什么呢?

bash 映像将 bash 可执行文件放在 /usr/local/bin/bash。我是这样确定的:

$ docker run -it bash
bash-5.1# which bash
/usr/local/bin/bash
bash-5.1# 

我使用 -it 运行 bash 映像以使其具有交互性,然后使用 which 命令为我提供 bash 的完整路径,即 /usr/local/bin/bash

因此,您需要像这样更改 Dockerfile:

FROM bash
ADD app.sh /
ENTRYPOINT ["/usr/local/bin/bash", "/app.sh"]

【讨论】:

以上是关于如何在 Mac 上从 Dockerfile 运行 bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 mac OS 上从 crontab 运行 git pull 命令问题

如何在 MAMP 安装上从终端运行 mysql 命令?

如何在 Mac 上从 Chrome 导出证书?

在 Mac 上从 R 连接到 Oracle

在 mac 上从 svn 签出后无法运行 cocos2d-x 工作副本项目

如何在 Mac 上从 Source 链接 Boost Regex C++?