
[英]Docker compose throws error during build: Service 'postgres' failed to build: exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown
[英]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 图像的大小。 如果您无法在服务器上拉取此基础镜像,那么您可以尝试在其他地方构建镜像并将其推送到您的服务器。 如果您可以在其他地方构建映像,则可以使用docker export
将其导出到 tar 文件。 然后您可以将其上传到您的服务器,并使用docker import
将其转换为 Docker 图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.