繁体   English   中英

Docker 构建错误:: exec: \"/bin/sh\": stat /bin/sh: 没有这样的文件或目录 [重复]

[英]Docker build error :: exec: \"/bin/sh\": stat /bin/sh: no such file or directory [duplicate]

我对 Docker 很陌生。 我在互联网上了解了如何构建 dockerfile 然后创建图像。

这就是我的 docker 文件的样子:

FROM scratch

ADD abc.py .

RUN pip3 install requests json HTTPBasicAuth

CMD [ "python3", "./abc.py"]

我正在使用暂存(基本映像),因为我在不允许我们连接到外部世界的 Linux 服务器上。

问题是当我尝试运行 Docker 构建命令即 docker build -t testimage 时出现以下错误。

OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:”/bin/sh“:stat /bin/sh:没有这样的文件或目录”:未知

谁能解释为什么会这样以及解决方案是什么。 我对问题有所了解,但无法确定解决方案。

scratch基础仅用于创建其他基础映像时。 它什么都没有,甚至没有像 bash 这样的 shell。 如果您想在 Docker 映像中运行 python 脚本,我建议使用Python 基本映像 例如,您可以使用python:3.8-slim ,它基于 Debian Linux。

FROM python:3.8-slim
COPY abc.py .
RUN pip3 install --no-cache-dir requests
CMD ["python3", "./abc.py"]

我对您的 Dockerfile 做了一些更改。

  • ADD更改为COPY ,因为 docker 文档说更喜欢COPY
  • pip install中添加了--no-cache-dir以防止下载被缓存。 这会减小 Docker 图像的大小。
  • 从 pip 安装中删除了一些软件包,因为我认为它们不存在...

如果您无法在服务器上拉取此基础镜像,那么您可以尝试在其他地方构建镜像并将其推送到您的服务器。 如果您可以在其他地方构建映像,则可以使用docker export将其导出到 tar 文件。 然后您可以将其上传到您的服务器,并使用docker import将其转换为 Docker 图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM