Docker Compose绑定80端口启动报错 如何配置改用81端口
问题背景
搭建PHP 7.4版本迁移所用的Docker环境时,执行docker-compose up触发端口绑定错误,错误日志如下:
PS E:\Projects\PHP Migration to 7.4> docker-compose up [+] Running 1/1 - Container phpmigrationto74-web-1 Recreated 0.1s Attaching to phpmigrationto74-web-1 Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
当前目录下原docker-compose.yml配置内容:
version: "3" services: web: image: nginx:latest ports: - "80:80"
经测试,执行docker run --detach --publish 81:80 --name webserver命令启动单容器时,访问http://localhost:81/可正常加载Nginx欢迎页,确认81端口可用、容器内Nginx运行正常,需要修改Docker Compose配置实现通过81端口启动服务。
解决方法
直接修改docker-compose.yml中的端口映射规则即可。Docker端口映射格式为"宿主机端口:容器内部端口",原配置将宿主机80端口绑定到容器Nginx默认监听的80端口,由于宿主机80端口被占用/权限限制无法绑定,将宿主机侧端口替换为已验证可用的81端口即可。
修改完成后的完整配置如下:
version: "3" services: web: image: nginx:latest ports: - "81:80"
配置修改完成后按以下步骤操作:
- 执行
docker-compose down清理之前启动失败的残留容器实例 - 执行
docker-compose up -d后台启动服务 - 启动完成后直接在浏览器访问
http://localhost:81即可正常访问服务,效果和单容器测试时完全一致。
后续如果要搭配PHP容器完成7.4迁移环境搭建,只需要在compose配置中新增对应PHP服务的配置,做好Nginx和PHP容器的网络连通即可,Nginx侧的81端口映射不需要额外调整。
内容的提问来源于stack exchange,提问作者IlludiumPu36
相关产品推荐
相关产品推荐

