У меня есть проект Stateless Service Fabric (.NET Core), с которого мне нужно начать работу Docker. Я использую Docker.DotNet
, и следующий код хорошо работает в небольшом консольном приложении, однако не будет работать в Service Fabric:
var dockerClient = new DockerClientConfiguration(new Uri("npipe://./pipe/docker_engine")).CreateClient();
// error occurs on next line (in Service Fabric)...
dockerClient.Images
.CreateImageAsync(new ImagesCreateParameters
{
FromImage = "jbarlow83/ocrmypdf",
Tag = "latest"
},
new AuthConfig(),
new Progress<JSONMessage>());
Я вижу эту ошибку в Service Fabric Explorer, если я пытаюсь его запуститьиз проекта Stateless SF:
System.UnauthorizedAccessException: Access to the path is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Pipes.NamedPipeClientStream.ConnectInternal(Int32 timeout, CancellationToken cancellationToken, Int32 startTime)
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Docker.DotNet.DockerClient.<>c__DisplayClass6_0.<<-ctor>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Net.Http.Client.ManagedHandler.d__33.MoveNext()
Я не уверен, действительно ли это проблема с разрешениями или она связана с тем, как работает изоляция сети Service Fabric.
Я пробую это на своем локальном экземпляре разработки, и это в конечном итоге (надеюсь) перейдет к локальной установке.
Есть ли способ получить доступ к именованным каналам на узле, которыйхостинг SF-приложения? Или, возможно, другой предложенный способ запуска Docker через приложение .NET Core SF?