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

Docker web容器IP动态变化时,如何通过自定义域名访问本地服务

解决方案

最简方案(无需额外安装软件)

所有*.localhost域名默认会解析到本地回环地址127.0.0.1,无需绑定容器动态IP,仅需两步操作:

  • 编辑/etc/hosts文件,添加以下内容(如果系统默认没有localhost子域名解析规则才需要加):
127.0.0.1 hello.localhost
  • 启动Docker容器时,保持端口映射为-p 8000:容器内部端口,之后直接在浏览器访问http://hello.localhost:8000即可正常使用,完全不受容器内部IP变动影响。

如果需要省略端口号,直接访问hello.localhost,可选择以下两个方案之一:

方案1:修改Docker端口映射(单服务场景,80端口未占用)

启动容器时将端口映射规则调整为绑定本地80端口即可,示例命令:

docker run -d -p 127.0.0.1:80:容器内部web端口 你的镜像名

配置完成后直接访问hello.localhost即可,不需要额外配置。

方案2:本地Nginx反向代理(多服务场景,80端口可共用)

适合本地同时运行多个Docker web服务,需要不同子域名区分的场景:

  • 安装Nginx:
sudo apt update && sudo apt install nginx -y
  • 新建站点配置文件:
sudo nano /etc/nginx/sites-available/hello.localhost
  • 写入以下反向代理配置:
server {
    listen 80;
    server_name hello.localhost;
    
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • 启用配置并生效:
# 建立软链接到启用目录
sudo ln -s /etc/nginx/sites-available/hello.localhost /etc/nginx/sites-enabled/
# 测试配置合法性
sudo nginx -t
# 重载Nginx使配置生效
sudo systemctl reload nginx

配置完成后直接访问hello.localhost即可,后续只要容器的本地端口映射保持8000不变,不管容器内部IP怎么变动都不需要调整配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:21:02