Docker

AWS ECS CannotStartContainerError:來自守護程序的錯誤響應

  • May 7, 2020

我正在嘗試使用以下命令使用容器啟動任務:

/bin/sh -c "export KAFKA_LISTENERS=\"PLAINTEXT://$$(hostname -i):9092\" && start-kafka.sh"

但是當容器嘗試啟動時我收到了這個錯誤,我不知道是什麼原因造成的:

CannotStartContainerError: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/bin/sh -c \\\"export KAFKA_LISTENERS=\\\\\\\"PLAINTEXT://$$(hostname -i):9092\\\\\\\" && start-kafka.sh\\

奇怪的是,如果我創建一個 docker compose 文件並在本地執行它,該錯誤只發生在 AWS 中,一切正常。

有任何想法嗎?

謝謝!

在我的頭撞牆幾天后,我終於弄明白了。似乎 AWS 控制台將錯誤消息削減為 255 個字元,所以我沒有看到完整的錯誤消息。問題在於,在為容器設置命令時,AWS 會將其解析為數組樣式的 CMD。所以/bin/bash -c "echo hello!"變成["/bin/bash -c \"echo hello!\""],這是行不通的。正確的格式是["/bin/bash, "-c", "echo hello!"]. 要完成此操作,您只需在 AWS 控制台中用逗號分隔命令,因此它變為/bin/bash,-c,echo hello!.

引用自:https://serverfault.com/questions/1015981