我正在尝试使用以下命令使用容器启动任务:
/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!
.