[英]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.