java - digital ocean : How to run Docker command on newly created Droplet via Java API

标签 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 都显示成功的结果。但是文件运行日志中不存在任何内容。

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

最佳答案

问题最终出在 docker run 命令中的 -t 标志。显然这不起作用,因为它不是终端或类似的东西。去掉flag就可以正常运行了。

关于java - digital ocean : How to run Docker command on newly created Droplet via Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40924883/

相关文章:

c# - 在 C# dockerfile 中运行可执行文件

docker - 在不同主机上获得可重现的 docker 层

Go 和 chromedp 的 Dockerfile

Java,隐式调用重写方法

java - 使用 avro-maven-plugin 1.9.0 生成具有十进制数据类型的类

ruby-on-rails - 收到证书后意外生成新的 openssl key

node.js - 通过 Digital Ocean 安装的 npm 被杀死

docker - 客户端向 HTTPS 服务器发送 HTTP 请求。 Docker-Compose 与 Docker-Machine

java - 如何使用 Timeline 在 JavaFX 上每 x 秒执行一个 void 方法?

java - 需要更快的阵列复制