【发布时间】:2018-01-09 09:28:55
【问题描述】:
我正在尝试在 Docker 中启动 Cassandra。
如果我用 Dockerfile 结束
CMD["cassandra", "-f"]
它开始没有问题。但是当我使用脚本时:
COPY ./launch_cassandra.sh /tmp/cassandra/launch_cassandra.sh
CMD["sh", "/tmp/cassandra/launch_cassandra.sh"]
launch_cassandra.sh 仅包含:
cassandra -f
我收到以下错误:
不建议以 root 用户或组运行 Cassandra - 请 使用不同的系统用户启动 Cassandra。
为什么这些不等价?为什么脚本以 root 身份运行?
【问题讨论】:
-
我不确定如果您在没有脚本的情况下运行它为什么会起作用,但您应该将用户设置为 cassandra。 docs.docker.com/engine/reference/builder/#user
-
你可以从官方 Cassandra Docker 镜像的 github repo 中获得一些关于你的 Dockerfile 的灵感:github.com/docker-library/cassandra
-
其实我的Dockerfile扩展了官方的(使用
FROM cassandra),所以用户设置为cassandra。但我只是注意到入口点是一个名为docker-entrypoint.sh的脚本,当第一个参数是 cassandra 时,它会执行“特殊”操作。所以这段代码在cassandra在CMD中时执行,而不是在我启动脚本时执行:差异可能来自于它,我会看看这个脚本