Reputation: 16022
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
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
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:
Docker Engine
service and right clickImage 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
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.
Upvotes: 0
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
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
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