Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VM在本地主机上运行docker容器_Docker_Containers - Fatal编程技术网

通过VM在本地主机上运行docker容器

通过VM在本地主机上运行docker容器,docker,containers,Docker,Containers,我是Docker和Containers的新手,我正在尝试在容器中运行一个简单的asp.net web应用程序,但遇到了一些问题。我的操作系统是Windows10Home,所以我必须使用Docker工具箱,它运行在只包含基本Linux操作系统的VM上。当我启动容器时,它似乎启动良好,但我无法在本地主机上查看应用程序 $docker run-p 8342:5000-it jwarren:项目 托管环境:生产 内容根路径:/app 现在收听:http://*:5000 应用程序已启动。按Ctrl+C组

我是Docker和Containers的新手,我正在尝试在容器中运行一个简单的asp.net web应用程序,但遇到了一些问题。我的操作系统是Windows10Home,所以我必须使用Docker工具箱,它运行在只包含基本Linux操作系统的VM上。当我启动容器时,它似乎启动良好,但我无法在本地主机上查看应用程序

$docker run-p 8342:5000-it jwarren:项目

托管环境:生产 内容根路径:/app 现在收听:http://*:5000 应用程序已启动。按Ctrl+C组合键关闭

$docker ps-a 容器ID映像命令已创建状态端口名称 98cc4aed7586 jwarren:project“dotnet run”8分钟前启动8分钟0.0.0.0:8342->5000/tcp顽皮


我尝试了在网上找到的几种不同的建议,但到目前为止都没有效果。然而,我对人际网络的了解非常有限,所以我可能没有完全理解需要做什么。我尝试使用默认的VM机器IP和容器IP访问它。据我所知,港口转运未结转至集装箱。任何援助都将是巨大的,因为这个项目将在周二到期,这是完成之前的最后一个路障
  • NAT将允许您的虚拟机通过internet访问internet。但不允许您的主机访问VM
  • 仅主机网络将创建一个网络,其中VM可以到达主机,主机可以到达VM。没有使用此网络的internet
  • 桥接网络将允许您的虚拟机从Wifi路由器或主网络分配另一个IP。此IP将允许VM访问网络以及访问网络上的其他机器。这将允许主机也可以访问IP
现在,在大多数情况下,当您希望在虚拟机内运行Docker并使用主机访问该虚拟机时,您希望虚拟机同时具有NAT和仅主机网桥

现在,在端口
8342
上访问应用程序几乎不需要检查什么

  • 在VM上禁用seliunx、firewalld和ufw(或正确配置以允许端口)
  • 您的虚拟机具有仅主机网络或桥接网络
  • iptables-S
    不应显示拒绝规则
一些虚拟机预先配置为只允许来自外部网络的端口22。因此,您应该尝试在
:8342
:8342
上访问该应用程序

如果要测试应用程序是否已启动,可以执行以下操作

docker inspect <containerid> | grep IPA

然后你就可以在代码>本地主机上访问应用程序:8342

>P>当使用VM网络时,很少有需要考虑的事情。p> Virtual Box有3种网络选项:NAT、桥接和仅主机

  • NAT将允许您的虚拟机通过internet访问internet。但不允许您的主机访问VM
  • 仅主机网络将创建一个网络,其中VM可以到达主机,主机可以到达VM。没有使用此网络的internet
  • 桥接网络将允许您的虚拟机从Wifi路由器或主网络分配另一个IP。此IP将允许VM访问网络以及访问网络上的其他机器。这将允许主机也可以访问IP
现在,在大多数情况下,当您希望在虚拟机内运行Docker并使用主机访问该虚拟机时,您希望虚拟机同时具有NAT和仅主机网桥

现在,在端口
8342
上访问应用程序几乎不需要检查什么

  • 在VM上禁用seliunx、firewalld和ufw(或正确配置以允许端口)
  • 您的虚拟机具有仅主机网络或桥接网络
  • iptables-S
    不应显示拒绝规则
一些虚拟机预先配置为只允许来自外部网络的端口22。因此,您应该尝试在
:8342
:8342
上访问该应用程序

如果要测试应用程序是否已启动,可以执行以下操作

docker inspect <containerid> | grep IPA

然后你就可以在
localhost:8342
上访问该应用程序了。我发现下面的帖子非常有用:。以下步骤非常有效:

  • 打开Oracle VM VirtualBox管理器
  • 选择Docker使用的VM
  • 单击设置->网络适配器1是否应(默认?)为“连接” 致:NAT“
  • 单击高级->端口转发添加规则:协议TCP,主机端口 8080,来宾端口8080(将主机IP和来宾IP保留为空)
  • 您现在应该能够通过localhost:8080和内部ip:8080浏览到您的容器

    启动容器(Dockerfile公开5000个): docker run-p 8080:5000-it jwarren:项目


    能够连接到

    我发现以下帖子非常有用:。以下步骤非常有效:

  • 打开Oracle VM VirtualBox管理器
  • 选择Docker使用的VM
  • 单击设置->网络适配器1是否应(默认?)为“连接” 致:NAT“
  • 单击高级->端口转发添加规则:协议TCP,主机端口 8080,来宾端口8080(将主机IP和来宾IP保留为空)
  • 您现在应该能够通过localhost:8080和内部ip:8080浏览到您的容器

    启动容器(Dockerfile公开5000个): docker run-p 8080:5000-it jwarren:项目


    能够连接到

    try-access try-access谢谢您的快速和彻底的响应!我回家后会给它一个机会,并评论它的进展。感谢您的快速和彻底的回应!我到家后会试一试,然后评论一下情况。
    ssh -L 8342:127.0.0.1:8342 user@<VMIP>