Javaを使用してドッカーのコピーコマンドをトリガするシェルスクリプトを実行しようとしています。私が試したすべてがコード127(コマンドが見つかりません)を返しました。Javaを使用するシェルスクリプトを実行してファイルをドッカーにコピーすると、エラーが返されます
public static void main(String[] args)
{
System.out.println("Starting shell script");
String script = "SendToDocker.sh";
String scriptPath = "/path/";
try {
Process awk = new ProcessBuilder("/bin/bash", scriptPath + script).start();
awk.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(
awk.getInputStream()));
String s;
while ((s = reader.readLine()) != null) {
System.out.println("Script output: " + s);
System.out.println("output code: "+awk.exitValue());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Finished");
}
SendToDocker.sh
#!/bin/bash
docker cp /path/asdf.csv 2d55a8445409:/
私はターミナルでそれを実行する場合、スクリプトは完全に正常に動作します。どんな助けやアイデアも大歓迎です。
ドッカーは、root権限を必要とし、多分あなたは、root権限を使用してJavaプログラムを実行する必要があります。 –
'で、ドッカーの.shスクリプトにドッカーバイナリのフルパスを入れます。 – gaoithe
私はsudoを使わずに私のユーザーにドッカーを走らせることができますが、私はJavaプログラムの中でsudoを使う方法がわかりません。また、私はこれをOSX上で実行しており、物理的なドッカーファイルの検索に問題があります。 docker cpは、ターミナルからshファイルを実行するときに用意したcontainerIDにコピーします。 – VanOstrich