2016-10-03 15 views
0

私はProcessを使ってNeo4j Dockerイメージをドッキングしています。画像を操作する前に、画像が正しくドッキングされていることを確認する必要があります。ここでは、Docker Toolboxの標準出力をプロセスウィンドウにリダイレクトして、Docker Toolboxが行っていることを何でも書いています。しかし、画像がドッキングされた後、画像はまったく進まず、その状態にとどまります。 whileループを超えるすべてのコードは実行されません。reader.ReadLine()の後にプロセスウィンドウが進まない

ProcessStartInfo psi = new ProcessStartInfo(); 
     psi.WindowStyle = ProcessWindowStyle.Normal; 
     psi.FileName = ConfigurationManager.AppSettings["Bash"]; 
     psi.WorkingDirectory = ConfigurationManager.AppSettings["ToolBox"]; 
     psi.Arguments = BuildArgumentString(); 
     psi.UseShellExecute = false;//set to false to redirect standard output 
     psi.RedirectStandardOutput = true; 

     Process process = Process.Start(psi); 

     StreamReader reader = process.StandardOutput; 

     while (!reader.EndOfStream) 
     { 
      Console.WriteLine(reader.ReadLine()); 
     } 

     //codes beyond this while loop is not executed 

これはプロセスウィンドウです。

enter image description here

答えて

1

あなたのコンテナが外れない、対話的に実行されています。ループはストリームの終わりを待っているのでメインプログラムに戻りませんが、コンテナの実行中はstdinstdoutに接続され、ストリームは終了しません。

Docker CLIは、Docker EngineのREST APIにコマンドを送信することによって動作します。コードを使用してコンテナを管理する場合は、CLIをバイパスしてAPIを直接使用する方がよいでしょう。the Docker.DotNetプロジェクトはAPIの.NETラッパーを提供します。

+0

Githubページ以外のドキュメントやチュートリアルはありますか?また、そのライブラリでドッカーを実行することは可能ですか? – jmc

関連する問題