
[英]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.