0

我正在使用 sbt-docker 并尝试通过以下链接在 docker 上设置 ssh:https ://docs.docker.com/examples/running_ssh_service/ 。

sbt-docker 似乎不明白以下内容:

run("echo", "'root:root' | chpasswd")

此运行命令无需更改 root 用户密码,而是简单地打印字符串“'root:root' | chpasswd”。

相似地,

run("echo", "root:root", "&>", "rootpasswd.txt")

此命令打印“root:root &> rootpasswd.txt”,而不是将“root:root”写入 rootpasswd.txt 文件。

知道如何让 sbt-docker 正确执行这些 echo 命令吗?谢谢!

4

1 回答 1

2

Docker 可以通过两种方式运行命令,shell 形式和 exec 形式。shell 形式将在 shell 中运行您的命令。sbt-docker 通过以下方法支持两种格式:run(exec) 和runShell(shell)。

由于您使用的是管道,因此您需要使用 shell 运行命令。这就是该runShell方法的用途:

runShell("echo", "root:root", "|", "chpasswd")
runShell("echo", "root:root", "&>", "rootpasswd.txt")

您也可以使用该runRaw方法,它允许您自由使用任何形式:

runRaw("echo root:root | chpasswd")
runRaw("echo root:root &> rootpasswd.txt")
于 2015-05-25T07:42:44.673 回答