docker:来自守护程序的错误响应:端口不可用:侦听 tcp 0.0.0.0:80:绑定:

Tim*_*phy 20 iis docker

我尝试在 Windows 10 Pro 工作站上运行 docker 映像,但收到此错误:

docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Run Code Online (Sandbox Code Playgroud)

我正在运行这个命令:

docker run -d -p 80:80 docker/getting-started
Run Code Online (Sandbox Code Playgroud)

并得到此响应:

Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
188c0c94c7c5: Pull complete
617561f33ec6: Pull complete
7d856acdaa9c: Pull complete
a0d3c6e28e6d: Pull complete
af69a9b963c8: Pull complete
0739f3815ad8: Pull complete
7c7b75d0baf8: Pull complete
Digest: sha256:b821569034e3b5fae03b40e64a866017067f3bf17effe185b782bdbf02179528
Status: Downloaded newer image for docker/getting-started:latest
7907f6de2b55cc2d66b5ed3a642ac1a97e5bb5ecda5fcf76ff60d7236e8fd32d
docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Run Code Online (Sandbox Code Playgroud)

如何运行 Docker 容器并解决这个问题?

gtu*_*gtu 30

对我有帮助的命令是:

net stop winnat
net start winnat
Run Code Online (Sandbox Code Playgroud)

取自这里


Tim*_*phy 10

80通过运行命令检查是否有东西正在侦听端口PowerShell

Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess

如果响应是这样的:

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
------    -----      -----     ------      --  -- -----------
0     0.20       4.87       0.00       4   0 System 
Run Code Online (Sandbox Code Playgroud)

然后它就被拍摄了。终止进程或简单地更改端口

docker run -d -p 81:81 docker/getting-started 5a0b1202f48ef63c06d75c2f26be2a05f29aa84fe2fbdc5b66f989aa86df98f
Run Code Online (Sandbox Code Playgroud)


Sup*_*ade 6

docker:来自守护程序的错误响应:端口不可用:监听 tcp 0.0.0.0:80:绑定:尝试以访问权限禁止的方式访问套接字。

我还使用了Docker 的入门教程,运行了 docker run -d -p 80:80 docker/getting-started,并得到了相同的错误。

我认为 Internet 信息服务 (IIS) 可能已经在使用端口 80。我通过去验证了这个预感

开始 > IIS > 计算机名称 > 站点 > 默认网站 > 突出显示默认网站

左窗格:计算机名称 > 站点 > 默认网站 > 突出显示默认网站,右窗格:浏览 *.80 (http)

在右侧窗格中,我看到

浏览 *.80 (http)

是的,80 端口已被使用!

注意:要验证是否有任何进程正在使用端口 80,请运行命令

Get-Process -Id (Get-NetTCPConnection -LocalPort 80).OwningProcess

并寻找类似的东西

 NPM(K)    PM(M)      WS(M)     CPU(s)      Id  SI ProcessName
 ------    -----      -----     ------      --  -- -----------
      0     0.20       2.96       0.00       4   0 System
Run Code Online (Sandbox Code Playgroud)

根据@Tim Dunphy 的回答。


解决方案#1

停止默认网站。

  • 转到上面的 IIS > 右窗格 > 管理网站 > 停止
  • 使用该net stop http命令,停止使用该端口的服务。

解决方案#2

您可能不想停止 IIS 或在端口 80 上运行的任何其他服务,因此只需更改本地端口即可!例如,

docker run -d -p 81:80 docker/getting-started

只要您没有使用端口 81 的服务,就可能会成功。