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

时间:2016-12-02 04:37:06

标签: java docker digital-ocean user-data

我尝试创建一个新的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都显示成功的结果。但是文件runlog中没有任何内容。

我可以直接进入Droplet,然后运行完全相同的docker命令,它会按预期运行。为什么不能从userdata脚本运行它?为什么没有产生输出?

1 个答案:

答案 0 :(得分:0)

问题最终成为docker run命令中的-t标志。显然这不起作用,因为它不是终端或类似的东西。删除标志,它运行正常。