2017-07-31 75 views
0

我是新来的Docker和容器,我试图在容器中运行一个简单的asp.net web应用程序,但遇到问题。我的操作系统是Windows 10 Home,所以我必须使用Docker工具箱,该工具箱在仅包含基本Linux操作系统的虚拟机上运行。当我旋转容器时,它似乎开始正常,但我无法在本地主机上查看应用程序。通过虚拟机在本地主机上运行码头容器

$泊坞窗运行-p 8342:5000 - 它jwarren:项目

托管环境:生产 内容根路径:/应用程序 现在监听:HTTP:// *:5000 应用开始。按下Ctrl + C关闭。

$搬运工PS -a 容器ID IMAGE命令创建的状态端口名字 98cc4aed7586 jwarren:项目 “的dotnet跑” 10分钟前最多8分钟0.0.0.0:8342->5000/tcp naughty_brattain

我我尝试了几种在网络上发现的不同建议,但迄今为止没有任何帮助。但是,我的网络知识非常有限,所以我可能不完全了解需要做什么。我试着用默认的VM机器IP和容器IP访问它。我了解端口转发不会转移到容器。任何协助都会很棒,因为这个项目将于周二到期,这是整理前的最后一个路障。

+0

尝试访问http://127.0.0.1连接: 8342 – papey

回答

1

我找到了应用程序的下面的帖子真的很有用:How to connect to a docker container from outside the host (same network) [Windows]。以下步骤进行完美工作:

  1. 开放的Oracle VM VirtualBox经理
  2. 选择由码头工人使用的VM
  3. 点击设置 - >网络适配器1应(默认?) “附 到:NAT”
  4. 单击高级 - >端口转发添加规则:协议TCP,主机端口 8080,客户端口8080(离开主机IP和客户IP空)

您现在应该是能够通过localhost:8080和your-internal-ip:8080浏览您的容器。

启动容器(Dockerfile公开5000): 搬运工运行-p 8080:5000 - 它jwarren:项目

之所以能够与http://localhost:8080

0

使用虚拟机网络时,有几件事情需要考虑。

Virtual Box有三种类型的网络选项NAT,Bridged和Host Only。

  • NAT将允许您的虚拟机通过您的互联网访问互联网。但是不允许你的主机访问虚拟机主机只有网络将创建一个网络,虚拟机可以访问主机,主机可以访问虚拟机。没有互联网使用此网络
  • 桥接网络将允许您的虚拟机从您的WiFi路由器或主网络分配另一个IP。该IP将允许虚拟机拥有网络访问权限以及访问网络上的其他计算机。这将允许甚至主机在大多数情况下,达到IP

现在,当你想运行多克尔一个虚拟机,你想使VM具有NAT和主机仅桥梁访问该虚拟机使用主机内部

现在端口8342需要几件事情检查

  • seliunx,firewalld访问你的应用程序,UFW对你的虚拟机中使用(或正确配置为允许端口)
  • 虚拟机有一台主机的唯一网络或桥接网络
  • iptables -S不应该表现出拒绝规则

一些虚拟机已经预先配置为仅来自外部网络的端口22允许。所以你应该尝试访问<hostonlyip>:8342<bridgedip>:8342上的应用程序。

如果你想测试,如果应用程序是涨还是不是你可以从这个做以下

docker inspect <containerid> | grep IPA 

获取IP,并运行命令

curl http://<containerip>:5000/ 

这个命令必须执行在VM内而不在你的机器上。如果此命令不起作用,那么您的容器不会在5000上进行侦听。有时,应用程序只在容器中侦听127.0.0.1。这意味着它们只能在容器内工作,而不能在外面工作。容器需要内部的应用程序来听0.0.0.0

实在不行也可以尝试使用SSH隧道方式

ssh -L 8342:127.0.0.1:8342 [email protected]<VMIP> 

然后你应该能够访问localhost:8342

+0

感谢您的快速和彻底的反应!当我回到家时,我会给它一个镜头,并评论它是如何发生的。 – JoJo

相关问题