dotnet / dotnet/Docker.DotNet

Timeout when trying to access docker engine from inside a container with .net framework

Open
#465 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
2.4k
Forks
416
PR merge metrics
No merged PRs in 30d

Description

**Output of `dotnet --info`:**

```
.NET Core SDK (reflecting any global.json):
Version: 3.1.401
Commit: 5b6f5e5005

Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.401\

Host (useful for support):
Version: 3.1.7
Commit: fcfdef8d6b

.NET Core SDKs installed:
1.0.4 [C:\Program Files\dotnet\sdk]
1.1.0 [C:\Program Files\dotnet\sdk]
2.0.2 [C:\Program Files\dotnet\sdk]
2.1.2 [C:\Program Files\dotnet\sdk]
2.1.100 [C:\Program Files\dotnet\sdk]
2.1.200 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
2.1.500 [C:\Program Files\dotnet\sdk]
2.1.503 [C:\Program Files\dotnet\sdk]
2.1.507 [C:\Program Files\dotnet\sdk]
2.1.602 [C:\Program Files\dotnet\sdk]
2.1.604 [C:\Program Files\dotnet\sdk]
2.1.700 [C:\Program Files\dotnet\sdk]
2.1.701 [C:\Program Files\dotnet\sdk]
2.1.801 [C:\Program Files\dotnet\sdk]
2.2.401 [C:\Program Files\dotnet\sdk]
3.1.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
```

**What version of Docker.DotNet?:**

```
3.125.4
```

**Steps to reproduce the issue:**
I created a tiny console app in both .Net framework (4.7.2) and .Net core (3.1) to write out the number of containers.

static async Task Main(string[] args)
{
DockerClient client = new DockerClientConfiguration(new Uri("npipe://./pipe/docker_engine")).CreateClient();

IList containers = await client.Containers.ListContainersAsync(
new ContainersListParameters()
{
Limit = 10,
});

Console.WriteLine($"Number of containers = {containers.Count}");
}

I then set up two docker images to use the two exes and just run them. The images were based on mcr.microsoft.com/windows/servercore:ltsc2019

I then setup a docker-compose.yml file to run the two containers (using docker-compose up) with the following volumes defined

volumes:
- source: '\\.\pipe\docker_engine'
target: '\\.\pipe\docker_engine'
type: npipe

**What actually happened?:**

The .net core version ran fine with no errors. The .net framework version had a timeout

listcontainersframeworktest |
listcontainersframeworktest | Unhandled Exception: System.TimeoutException: The operation has timed out.
listcontainersframeworktest | at System.IO.Pipes.NamedPipeClientStream.ConnectInternal(Int32 timeout, CancellationToken cancellationToken, Int32 startTime)
listcontainersframeworktest | at System.IO.Pipes.NamedPipeClientStream.<>c__DisplayClass21_0.b__0()
listcontainersframeworktest | at System.Threading.Tasks.Task.InnerInvoke()
listcontainersframeworktest | at System.Threading.Tasks.Task.Execute()
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Docker.DotNet.DockerClient.<>c__DisplayClass6_0.<<-ctor>b__0>d.MoveNext() in /_/src/Docker.DotNet/DockerClient.cs:line 83
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Microsoft.Net.Http.Client.ManagedHandler.d__33.MoveNext() in /_/src/Docker.DotNet/Microsoft.Net.Http.Client/ManagedHandler.cs:line 164
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Microsoft.Net.Http.Client.ManagedHandler.d__31.MoveNext() in /_/src/Docker.DotNet/Microsoft.Net.Http.Client/ManagedHandler.cs:line 80
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Docker.DotNet.DockerClient.d__61.MoveNext() in /_/src/Docker.DotNet/DockerClient.cs:line 364
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Docker.DotNet.DockerClient.d__61.MoveNext() in /_/src/Docker.DotNet/DockerClient.cs:line 359
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Docker.DotNet.DockerClient.d__51.MoveNext() in /_/src/Docker.DotNet/DockerClient.cs:line 206
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at Docker.DotNet.ContainerOperations.d__3.MoveNext() in /_/src/Docker.DotNet/Endpoints/ContainerOperations.cs:line 39
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at ListDockerContainers.Program.d__0.MoveNext()
listcontainersframeworktest | --- End of stack trace from previous location where exception was thrown ---
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
listcontainersframeworktest | at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
listcontainersframeworktest | at ListDockerContainers.Program.(String[] args)

**What did you expect to happen?:**
I thought both little apps would work fine. Hopefully, I'm doing something obviously wrong.

**Additional information:**

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.