Docker Toolbox - Localhost无法正常工作

时间:2017-03-17 19:50:17

标签: windows docker docker-toolbox

所以我使用Docker Toolbox因为我的机器上没有Hyper-V,因为它不是Windows 10专业版。一切似乎工作正常,但当我尝试使用我的浏览器0.0.0.0:80时,它总是返回我:无法访问此站点

但是当我运行命令时:docker container ps我得到以下内容:0.0.0.0:80->80/tcp表示此地址应该有效。我搜索了stackoverflow和github问题。现在我被卡住了。

我错过了什么吗?

谢谢, 标记

编辑:

使用docker-machine ip default返回192.168.99.100。我在端口80上运行它。除了地址成为容器ID之外,我仍然得到相同的结果:https://fd677edg12

我在cmd上运行该命令以找到我的ipv4:cmd /k ipconfig /all。将结果与端口放在一起,它返回相同的内容:https://fd677edg12

7 个答案:

答案 0 :(得分:110)

Docker Toolbox没有像Docker for Windows那样多的便利,但是你使用它是正确的,因为你在家庭版上。

在Toolbox中,没有任何内容@interface A : NSMutableDictionary @end @implementation A - (void)encodeWithCoder:(NSCoder *)aCoder { } - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder { if (self = [super init]) { } return self; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; A *a = [[A alloc] init]; NSMutableDictionary *dict = [NSMutableDictionary new]; dict[@"some"] = a; NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:dict]; dict = [NSKeyedUnarchiver unarchiveObjectWithData:archive]; NSLog(@"%@",dict); } ,默认情况下为localhost,因为它在VirtualBox中运行Linux VM。

因此,如果您运行192.168.99.100

(注意我必须为docker run -p 80:80 nginx发布一个端口来监听该端口)

然后转到192.168.99.100应该可以。

答案 1 :(得分:36)

我最初在使用DockerToolBox和OracleVM VirtualBox时在localhost:8080访问我的应用程序时遇到了一些问题。

在VirtualBox中:

  1. 单击相应的计算机(可能是标有“默认”的计算机)
  2. 设置
  3. 网络&gt; <适配器1>高级&gt;港口转发
  4. 点击“+”添加新规则
  5. 设置主机端口8080&amp;访客港8080;务必将主机IP和访客IP留空
  6. 运行命令:

    docker run -p 8080:8080 ${image_id}
    

答案 2 :(得分:25)

我正在https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell跟踪docker for windows教程,并在网络浏览器中测试nginx时陷入第6步。似乎我遇到了类似的问题,因为我也使用Windows Home而且没有Hyper-V。我的解决方法非常简单:

  1. 检查您的泊坞窗IP默认值
  2.   

    $ docker-machine ip default

         

    192.168.99.100

    1. 转到Oracle虚拟机以设置端口转发。确保网络设置为NAT,并添加端口转发。 主机IP:127.0.0.1,访客IP:192.168.99.100,端口全部设置为80 like this

    2. 再次尝试浏览器并运行http://localhosthttp://127.0.0.1(也可以添加端口80)。它应该运行。

    3. 问题是nginx IP可以在docker虚拟机中访问,因此我们需要该端口转发设置才能直接在主机的浏览器中访问它

答案 3 :(得分:0)

您可以按照以下说明使用localhost代替“ 192.168.99.100”:

步骤#01:

docker-machine ip default

您将看到默认IP

步骤#02:

docker-machine stop default

步骤#03:

  1. 打开VirtualBox Manager(从Windows的启动程序中搜索VirtualBox Manager
  2. 选择您的Docker Machine VirtualBox映像(例如:默认值)
  3. 打开设置->网络->高级->端口转发
  4. 添加您的应用名称,所需的主机端口和来宾端口 i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

步骤#04: 现在,您可以通过执行以下操作来启动Docker Machine:

docker-machine start default

然后只需启动Docker容器,您就可以通过localhost访问它。

Have a look here了解详情。

答案 4 :(得分:0)

要映射期望的端口到localhost而不是直接命中docker-machine IP,可以使用VirtualBox CLI。

如果docker-machine VM(这里称为default)正在运行,请添加和删除如下规则:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

如果虚拟机未运行,或者您要在更改之前停止:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

其中端口转发规则的格式为[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>

请注意,在VirtualBox中,您想映射到Docker映射的 host 端口,而不是内部容器端口。您正在映射主机-> VM,然后Docker映射VM->容器。

请参见VirtualBox docs

答案 5 :(得分:0)

这是避免键入IP 192.168.99.100的另一种简便方法。 转到C:\Windows\System32\drivers\etc\hosts并在文件末尾添加:

192.168.99.100 docker.awesome 或您喜欢的任何名称。

保存文件(您需要具有管理员权限,因此请确保右键单击该文件并以管理员身份运行,以便在编辑文件时将其保存。)

在这种情况下,转到您选择的域名 docker.awesome:8080 即可。

答案 6 :(得分:0)

经过大量的试验,我能够得到这个公告栏。

  1. 我使用的docker run命令-docker run -p 4680:8080 --name bb bulletinboard:1.0 在这里,4680是本地主机端口号。 8080是容器端口号,即容器将要监听的端口。 Dockerfile的EXPOSE命令中提到了此端口号。

  2. 然后,转到网络浏览器并输入192.168.99.100:4680

在这里,192.168.99.100是docker机器的IP地址(使用命令-> docker-machine ip)

  1. 此后,您的浏览器页面应打开至-

enter image description here

希望这对您有帮助!