Jim
Jim

Reputation: 16022

Docker for Windows 10 //./pipe/docker_engine: access is denied

I have installed docker for Windows 10 (Anniversary) as per MSDN
I can execute docker.exe commands in an elevated powershell environment, but not in a regular powershell.

I have updated the docker configuration file to contain:

{
    "group": "Power Users"
}

And have obviously added the user to power users, the user is also in the administrators group.

Is there any way to execute docker commands such as docker search * without using run as administrator

Warning: failed to get default registry endpoint from daemon (error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/info: open //./pipe/docker_engine: Access is denied.). Using system default: https://index.docker.io/v1/ error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/images/search?limit=25&term=%2A: open //./pipe/docker_engine: Access is denied.

Upvotes: 18

Views: 62253

Answers (6)

abdelkader ralem
abdelkader ralem

Reputation: 1

Fixed with this ps script, just give full permission to \.\pipe\docker_engine , logout and then log on back again.

$account="Domain\Username"
$npipe = "\\.\pipe\docker_engine"
$dInfo = New-Object "System.IO.DirectoryInfo" -ArgumentList $npipe
$dSec = $`dInfo`.GetAccessControl()
$fullControl =[System.Security.AccessControl.FileSystemRights]::FullControl
$allow =[System.Security.AccessControl.AccessControlType]::Allow
$rule = New-Object "System.Security.AccessControl.FileSystemAccessRule" -ArgumentList $account,$fullControl,$allow
$dSec.AddAccessRule($rule)
$dInfo.SetAccessControl($dSec)

Replace your domain and username , you can get this with : $env:USERDOMAIN + "" + $env:USERNAME in powershell.

Upvotes: 0

Ravindra Mishra
Ravindra Mishra

Reputation: 21

Note: The solution below (green tick answer) resolved my issue. Mentioning this so it can help others.

You should stop docker service and then run the dockerd command.

To stop docker:

  1. Search for "services" in start menu & open services.
  2. Select Docker Engine service and right click
  3. Select "Stop" option.

Image showing docker engine service in windows services

Now you can try running the dockerd command again.

Solution Reference:

The Docker service (running as a Windows service) is bound to the dockerd application (because dockerd is the docker daemon). If you stop the Docker service and then run the dockerd command from the sites listed in the question, it will work.

Url: Running dockerd gives error "open //./pipe/docker_engine: Access is denied." (Windows Server 1709)

Upvotes: 2

Adrian Sanchez
Adrian Sanchez

Reputation: 191

I tried Carlos solution but it didn't work for me.

So I just had to open "lusrmgr.msc" (Windows) and add my user to the "docker-users" group as shown below. Then I restarted my computer and all worked fine!

More info on this issue: https://github.com/docker/for-win/issues/868.

Adding local user to docker-users group.

Upvotes: 0

Ranjit
Ranjit

Reputation: 145

I was facing this issue when I started the powershell/cmder without administrator. The issue got resolved when I started my powershell/cmder with run as administrator.

Upvotes: 3

Carlos Rafael Ramirez
Carlos Rafael Ramirez

Reputation: 6234

Although my user has Administrator privileges, I don't need to use an elevated PowerShell to run docker.

You can try making the connection via TCP. In Power Shell type:

$env:DOCKER_HOST="tcp://0.0.0.0:2375"
docker ps

Or

$env:DOCKER_HOST="tcp://localhost:2375"
docker ps

Since version 17.03.1-ce-win12 (12058) you must check Expose daemon on tcp://localhost:2375 without TLS if you use Docker for Windows and connecting via TCP

Regards

Upvotes: 9

Jeff
Jeff

Reputation: 2738

This is a sideways way of answering your question, but I think it will be what you're after in the long run....

As of 1.12.2 Beta 26 Docker For Windows allows you to switch between Windows and Linux containers. The install is an MSI so it appears to set up the correct permissions too. (And you don't have to go though all the manual steps to get Windows containers working!)

I'm using 1.12.2 Beta 28 on Win 10. I can switch between Linux and Windows; and run Docker commands with out running PS as admin. I've tested 'docker ps', 'docker info', and 'docker search *' so far..

Here's where I got my info (https://stefanscherer.github.io/run-linux-and-windows-containers-on-windows-10/)

Upvotes: 4

Related Questions