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

同VLAN下非Docker应用通过GET请求访问Docker容器的方法

容器跨机器访问配置及运行问题解答

跨机器访问的IP与端口说明

同一VLAN内的机器无法直接访问Docker容器的内部IP,必须通过运行容器的主机IP+主机上被映射的端口来访问,具体对应两种启动命令如下:

  • 当使用命令 sudo docker run -d -p 8081:8081 myimage:2.0 时:
    主机的8081端口被映射到容器内部的8081端口,另一台机器发送GET请求时,使用 主机IP:8081 即可。
  • 当使用命令 sudo docker run -d -p 80:8081 myimage:2.0 时:
    主机的80端口被映射到容器内部的8081端口,另一台机器发送GET请求时,使用 主机IP:80(HTTP请求默认80端口可省略,但建议明确指定)。

容器运行状态的问题分析

  • 你最初用 CMD tail -f /dev/null 虽然能防止容器退出,但该命令会覆盖镜像中原有的应用启动指令,导致容器内的服务进程根本没启动,所以即使端口映射正确也无法访问。
  • 后续在sh脚本中加入 while true; do sleep 1000; done 后能成功访问,是因为这个脚本应该先启动了你的应用服务,再用循环维持容器运行——此时容器的主进程是脚本,而应用服务在后台正常运行,所以外部能正常请求。
  • 更合理的做法是让容器的主进程直接是你的应用服务:比如如果是Java应用,将Dockerfile的CMD设为 CMD ["java", "-jar", "your-app.jar"],只要应用服务不崩溃退出,容器就会持续运行,无需额外的休眠或tail命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:35:16