root@MTHRC0319N:/# docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.75-ga75 docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8080 -> 0.0.0.0:0: listen tcp 0.0.0.0:8080: bind: An attempt was made to access a socket in a way forbidden by its access permissions. ERRO[0000] error waiting for container:
时间: 2024-03-20 16:44:12 浏览: 17
这个错误提示和上一个类似,意味着端口 8080 已经被其他程序占用了,导致 Docker 无法将它绑定到容器中。
你可以参考上一个回答中的解决方法,尝试修改容器的端口或者查找并杀死占用端口的进程。如果还是无法解决,可以检查一下防火墙的配置,将需要的端口开放。
另外,你可以使用以下命令查看系统中已经被占用的端口:
```
sudo lsof -i -P -n | grep LISTEN
```
这个命令会列出所有正在监听的端口,你可以查找其中是否有占用了 8080 端口的进程。
相关问题
告诉我解决办法root@MTHRC0319N:/# docker run -it -m 8g -p 3000:8080 liferay/portal:7.4.3.75-ga75 docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3000 -> 0.0.0.0:0: listen tcp 0.0.0.0:3000: bind: An attempt was made to access a socket in a way forbidden by its access permissions. ERRO[0000] error waiting for container:
这个错误提示意味着端口 3000 已经被其他程序占用了,导致 Docker 无法将它绑定到容器中。
你可以通过以下几种方法解决这个问题:
1. 修改容器端口
可以尝试修改容器的端口,比如将 `-p 3000:8080` 改为 `-p 8080:8080`,这样就不会再占用 3000 端口了。
2. 查找并杀死占用端口的进程
可以使用以下命令查找占用 3000 端口的进程:
```
sudo lsof -i :3000
```
然后找到对应进程的 PID,使用 `kill` 命令杀死它。
3. 检查防火墙配置
有时候防火墙也会屏蔽某些端口,你可以检查一下防火墙的配置,将需要的端口开放。
希望这些方法可以帮助你解决问题。
root@MTHRC0319N:/# docker network ls NETWORK ID NAME DRIVER SCOPE cb0f49845235 bridge bridge local bcedd84cf9c1 host host local 4152b7fcf112 none null local root@MTHRC0319N:/# sudo lsof -i -P -n | grep LISTEN wslconnec 345 rouo 6u IPv4 131357 0t0 TCP 127.0.0.1:6010 (LISTEN) root@MTHRC0319N:/# sudo docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.75-ga75 docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8080 -> 0.0.0.0:0: listen tcp 0.0.0.0:8080: bind: An attempt was made to access a socket in a way forbidden by its access permissions. ERRO[0000] error waiting for container:
从你提供的信息来看,似乎是端口被占用导致的问题。在你运行 Docker 容器时,指定了将容器的 8080 端口映射到本地的 8080 端口。但是,操作系统可能已经在使用该端口,因此 Docker 无法绑定该端口。你可以使用以下命令检查端口占用情况:
```
sudo lsof -i :8080
```
如果已经有进程在使用该端口,你可以通过停止该进程或更改 Docker 映射端口来解决问题。例如,你可以将容器端口映射到本地的另一个可用端口,如 8081:
```
sudo docker run -it -m 8g -p 8081:8080 liferay/portal:7.4.3.75-ga75
```