我正在尝试使用以下命令通过容器启动任务:
/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\\
奇怪的是,错误只发生在 AWS 中,如果我创建一个 docker compose 文件并在本地运行它,一切都正常。
有任何想法吗?
谢谢你!
答案1
经过几天的苦思冥想,我终于弄明白了。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!
。