You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Debian虚拟机部署Docker容器网站无法访问问题求助

问题:Azure虚拟机上Docker容器化网站无法访问

我在Azure虚拟机部署Docker容器化网站,操作步骤如下:

  1. 创建VM并开放80端口:
az group create --name my-vm-rg --location germanywestcentral
az vm create --resource-group my-vm-rg --name linuxVM --image Debian --admin-username <admin_user> --admin-password <admin_password> --authentication-type password --public-ip-sku Standard --size Standard_B1ms --disable-integrity-monitoring
az vm open-port --resource-group my-vm-rg --name linuxVM --port 80
  1. 通过Putty连接VM,安装Docker、nano并更新系统。
  2. 创建新文件夹及包含<h1>Hello World</h1>的index.html文件。
  3. 创建Dockerfile:
FROM nginx:1.17.1-alpine
LABEL maintainer="Name Surname <email>" description="Some random description"
COPY . /usr/share/nginx/html
  1. 构建并运行容器:
docker build -t docker-test-img .
docker image ls -a
docker run --name my-app -d -p 8080:80 docker-test-img
docker container ls -a

当前问题:Docker容器已正常运行,但本地浏览器通过<machine_ip_address>:80或<machine_ip_address>:8080均无法访问网站,提示“无法访问此网站”。
背景:正在学习相关技术,必须使用Azure虚拟机,操作系统可更换。


排查与解决方案

1. 补全Azure网络安全组(NSG)规则

你仅开放了80端口,但容器将宿主机8080端口映射到内部80端口,因此需要在NSG中添加8080端口的入站允许规则:

az vm open-port --resource-group my-vm-rg --name linuxVM --port 8080

也可登录Azure门户,找到虚拟机对应的NSG,手动添加入站规则,允许TCP协议的8080端口从指定IP(或任意IP)访问。

2. 检查虚拟机本地防火墙

Debian默认启用ufw防火墙,可能拦截了8080端口流量:

  • 查看防火墙状态:
    sudo ufw status
    
  • 若防火墙启用,添加8080端口允许规则:
    sudo ufw allow 8080/tcp
    sudo ufw reload
    
  • 若无需防火墙,可直接关闭:
    sudo ufw disable
    

3. 验证容器与宿主机端口状态

  • 确认容器内服务正常:
    docker exec my-app curl localhost:80
    
    若返回<h1>Hello World</h1>,说明容器内Nginx服务正常。
  • 检查宿主机是否监听8080端口:
    sudo netstat -tulpn | grep 8080
    
    正常情况下会看到docker-proxy进程监听0.0.0.0:8080。

4. 调整端口映射直接使用80端口(可选)

如果想直接通过80端口访问,修改容器运行命令,将宿主机80端口映射到容器80端口:

# 停止并删除现有容器
docker stop my-app
docker rm my-app
# 重新运行容器
docker run --name my-app -d -p 80:80 docker-test-img

此时无需额外开放8080端口,直接用<machine_ip_address>:80即可访问。

5. 确认公网IP正确性

通过以下命令获取虚拟机公网IP,确保浏览器输入的IP与结果一致:

az vm show --resource-group my-vm-rg --name linuxVM -d --query publicIps -o tsv

内容的提问来源于stack exchange,提问作者Wojciech X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:41:11