Docker 容器起不來怎麼辦提示詞(容器立即退出、退出碼含義、端口與網絡不通、掛載目錄權限報錯)

容器啟動後馬上退出、一直重啟、訪問不到端口、掛載的目錄沒有權限、容器之間互相連不上時用:把 docker ps、logs、inspect 的輸出貼給 AI,它根據退出碼和日誌判斷原因,給出逐步驗證的命令和修復方法。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名熟悉 Docker 和容器網絡的運維工程師。請幫我排查容器問題,按「先看證據、再下結論」的方式進行。

- 現象:[現象](例:容器啟動幾秒後退出,狀態為 Exited 1)
- 運行方式:[運行方式](例:docker compose,或 docker run 的完整命令)
- 宿主機系統:[宿主機系統](例:Ubuntu、Windows 上的 Docker Desktop)
- 已有輸出(容器列表與狀態、容器日誌、inspect 中的關鍵部分、compose 文件):
  [粘貼輸出]
- Dockerfile(如果是自己構建的鏡像):
  [粘貼 Dockerfile]

分析步驟:
1. 根據退出碼判斷方向:0(主進程正常結束,常見於前台進程寫成了後台運行)、1(應用自身報錯)、126 與 127(命令不可執行或找不到,常見於腳本換行符或路徑問題)、137(被強制終止,常見於內存超限)、139(段錯誤)、143(收到終止信號)。
2. 看日誌:容器已經退出時如何查看最後的日誌;日誌為空時如何用交互方式啟動同一個鏡像進去排查(覆蓋入口命令)。
3. 常見原因逐項檢查:
   - 主進程不在前台運行,執行完就退出;
   - 環境變量或配置文件缺失;
   - Windows 編輯的腳本帶有回車換行符,導致「找不到文件」;
   - 掛載目錄的屬主與容器內運行用戶不一致,導致沒有權限;
   - 端口映射寫反、應用只監聽了容器內的本地迴環地址導致外部無法訪問;
   - 容器之間用 localhost 互相訪問(應該用服務名)、不在同一個網絡;
   - 依賴的服務(如數據庫)還沒就緒,應用就啟動並失敗退出;
   - 內存限制過小被終止。
4. 每個判斷給出驗證命令,等我貼回結果再繼續。
5. 給出修復方法:修改 Dockerfile、compose 文件或啟動命令的具體內容。

不要建議用特權模式或關閉安全設定來解決權限問題。

高亮處換成你自己的內容:[現象]、[運行方式]、[宿主機系統]、[粘貼輸出]、[粘貼 Dockerfile]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[已有輸出] 最關鍵的是容器狀態裏的退出碼和容器日誌的最後幾十行。用 compose 時把整個 compose 文件貼上,很多網絡和依賴順序問題出在這裏。

常見坑:

  • 應用只監聽了 127.0.0.1,在容器內一切正常,從宿主機訪問映射端口卻連不上。要監聽 0.0.0.0。
  • 在 compose 中,一個容器用 localhost 去連數據庫容器,其實連的是自己。要用數據庫服務的名字作為主機名。
  • 「依賴啟動順序」只保證容器啟動的先後,不保證數據庫已經可以接受連接。需要健康檢查加依賴條件,或者在應用中重試連接。

追問技巧:解決後追問「這個鏡像還有哪些可以優化的地方(體積、構建緩存、以非 root 運行)」,可以配合 418 號 Dockerfile 提示詞使用。

示例輸出

示例,僅供參考(現象:容器啟動後立即退出,退出碼 127)

判斷:127 表示「命令找不到」。結合日誌 exec /app/entrypoint.sh: no such file or directory,而文件確實存在,最常見的原因是腳本在 Windows 上編輯過,行尾帶有回車符,導致首行的解釋器路徑被識別成帶回車的路徑。

驗證:

bash
docker run --rm --entrypoint sh myapp:latest -c "head -1 /app/entrypoint.sh | od -c | head -2"

如果輸出中出現 \r,即可確認。

修復:在倉庫中為腳本統一使用 LF 換行(例如通過 .gitattributes 設定),或在 Dockerfile 中轉換:

dockerfile
COPY entrypoint.sh /app/entrypoint.sh
RUN sed -i 's/\r$//' /app/entrypoint.sh && chmod +x /app/entrypoint.sh

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~