DigitalOcean:如何通过 Java API 在新创建的 Droplet 上执行 运行 Docker 命令

DigitalOcean: How to run Docker command on newly created Droplet via Java API

我正在尝试创建一个新的 Droplet,然后通过 UserData bash 脚本启动 Docker 命令。我在创建 Droplet 时通过 Java API 设置用户数据,并观察到我创建的测试文件和日志已创建。

newDroplet.setUserData("#!/bin/bash\n" +
            "touch /test.txt;"+
            "docker login --username=myname--password=mypass > /loginlog;"+
            "docker pull mybuild > /pulllog;"+
            "docker run --log-opt max-size=1g --net host --name myserver -t -i mybuild > /runlog;");

loginlog 和 pulllog 都显示成功的结果。但是文件 运行log.

中不存在任何内容

我可以通过 ssh 进入 Droplet,然后 运行 使用完全相同的 docker 命令,它 运行 就像预期的那样。为什么不能是用户数据脚本中的 运行?为什么没有生成输出?

问题最终出现在 docker 运行 命令中的 -t 标志。显然这不起作用,因为它不是终端或类似的东西。移除标志,它 运行 没问题。