【发布时间】:2020-01-26 00:02:20
【问题描述】:
我试图围绕所有这些 Docker 教程展开思考,但实际上没有任何关于 80 端口是什么的解释。只是,“绑定到端口 80”。
这是我在运行示例 Dockerfile 后遇到同样错误的第三个 Docker 教程:
启动用户态代理时出错:listen tcp 0.0.0.0:80: bind: address 已经在使用中
所以,我知道端口 80 基本上是默认端口,这将允许我的应用程序在 example.com 而不是 example.com:80 上运行 - 例如。我的网络服务器和本地机器抱怨这个端口正在使用中。当然可以,默认是在使用的。
那么,为什么所有这些 Docker 教程都绑定到 80 端口?我敢打赌他们做得对,我错过了一些东西......但是,找不到明确的解决方案或描述。
这是我正在做的教程:Digital Ocean 的使用 Docker 安装 WordPress:https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose
果然,80端口对我来说失败了:
webserver:
depends_on:
- wordpress
image: nginx:1.15.12-alpine
container_name: webserver
restart: unless-stopped
ports:
- "80:80"
volumes:
- wordpress:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- certbot-etc:/etc/letsencrypt
networks:
- app-network
改成不会报错,但这意味着我们只能解析http://example.com:90 -
ports:
- "90:80"
我在这里缺少什么?为什么所有这些端口 80 的定义在我的 Mac 本地和远程 Digital Ocean Ubuntu8.1 服务器上都失败了?
【问题讨论】:
-
两个潜在的问题: 1. 1024以下的端口有特权,只能被root使用 2. 80端口正在使用中。无论哪种情况,都尝试将其映射为
8080:80 -
@Stavr00,谢谢。你能确认这个绑定吗?我们在这里是说将端口 8080 绑定到端口 80,还是反之亦然?当我进行更改时,我只能使用
http://ipaddress:8080访问网址。从概念上讲,如果我正在运行一个安装了 nginx 的实时 Web 服务器,并且正在以“旧方式”主动提供页面 - 一个 VM/app/nginx 配置......这是发生了什么吗?从根本上说,这种路由是否只能在默认端口 80 上没有运行 Web 服务器的机器上工作?比如,你会建议第二台没有运行 nginx 应用的服务器吗?
标签: docker docker-compose containers port port80