簡體   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