2016-09-24 4 views
1

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:/ 

私はターミナルでそれを実行する場合、スクリプトは完全に正常に動作します。どんな助けやアイデアも大歓迎です。

+1

ドッカーは、root権限を必要とし、多分あなたは、root権限を使用してJavaプログラムを実行する必要があります。 –

+0

'で、ドッカーの.shスクリプトにドッカーバイナリのフルパスを入れます。 – gaoithe

+0

私はsudoを使わずに私のユーザーにドッカーを走らせることができますが、私はJavaプログラムの中でsudoを使う方法がわかりません。また、私はこれをOSX上で実行しており、物理的なドッカーファイルの検索に問題があります。 docker cpは、ターミナルからshファイルを実行するときに用意したcontainerIDにコピーします。 – VanOstrich

答えて

0

*)Dockerfileは*

あるディレクトリに移動します)ドッキングウィンドウは、-t your_app_nameを構築します。

0

をyour_app_name -it

*)ドッキングウィンドウの実行にはJavaのjarファイルのためのいくつかのドッキングウィンドウのAPIを試してみてください? が次に例を示します。

https://github.com/docker-java/docker-java/tree/master/src/test/java/com/github/dockerjava/core/command

+0

この問題を解決したい場合は、私の答えは少し重いかもしれません。 –

+0

しかし、javaでより多くのドッカーコマンドを呼び出す場合は、これが役立ちます。 –

関連する問題