簡體   English   中英

使用命名管道從容器內部訪問 docker 引擎時出現 Docker.Do.net UnauthorizedAccessException

[英]Docker.Dotnet UnauthorizedAccessException when accessing docker engine from inside a container using named pipes

我創建了一個 ASP.NET Blazor 服務器應用程序,它使用Docker.DotNet庫查詢 Docker 引擎。 我將應用程序構建為 Docker Windows 容器映像和 map 在運行容器時命名為 pipe '\.\pipe\docker_engine'。 在我的 Win10 開發機器上一切正常,桌面為 docker。 我可以訪問容器化的 Blazor 應用程序並從主機獲取容器列表。

現在,當我嘗試在 Windows Server 2019 VM 上運行此映像時,出現異常(來自容器內的 Blazor 應用程序):

System.UnauthorizedAccessException: Access to the path is denied.
 at System.IO.Pipes.NamedPipeClientStream.TryConnect(Int32 timeout, CancellationToken cancellationToken)
 ...

如果我直接在服務器上部署和運行 Blazor 應用程序,它工作正常。 我還在服務器上運行Portainer ,它工作正常。

我是否需要在 Docker.DotNet 代碼中配置一些特殊的東西才能讓它在容器內部工作?

這是 Docker.DotNet 代碼:

DockerClient client = new DockerClientConfiguration().CreateClient();
IList<ContainerListResponse> containers = await client.Containers.ListContainersAsync(
    new ContainersListParameters()
    {
        Limit = 100,
    });

這就是我啟動容器的方式:

docker run -dt --restart=always -p 80:80 -e "ASPNETCORE_ENVIRONMENT=Production" --name DockerBlazor -v \\.\pipe\docker_engine:\\.\pipe\docker_engine dockerblazor:latest

歡迎任何想法:)

我想到了。 在 Dockerfile 我需要添加

USER ContainerAdministrator

現在它正在工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM