#c# #docker #process #neo4j #processstartinfo
#c# #docker #процесс #neo4j #processstartinfo
Вопрос:
Я использую стыковочные изображения Neo4j Docker Process
. Мне нужно убедиться, что изображения закреплены правильно, прежде чем выполнять с ним операции. Как вы можете видеть здесь, я перенаправляю стандартный вывод из Docker Toolbox в мое окно процесса и записываю в него все, что делает Docker Toolbox. Однако после того, как изображения закреплены, оно вообще не выполняется и остается в этом состоянии. Все коды за пределами цикла while не выполняются.
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
Это окно процесса.
Ответ №1:
Ваш контейнер работает в интерактивном режиме, а не отсоединен. Цикл не вернется к основной программе, потому что он ожидает окончания потока, но пока контейнер запущен, он будет подключен к stdin
и stdout
и поток не закончится.
CLI Docker работает путем отправки команд в REST API Docker Engine. Если вы хотите управлять контейнерами с помощью кода, было бы лучше обойти CLI и использовать API напрямую — Docker.Проект DotNet предоставляет оболочку .NET для API.
Комментарии:
1. Есть ли какая-либо другая документация или учебные пособия, кроме страницы Github? Кроме того, возможно ли запустить docker в этой библиотеке?