Nginx 我的docker容器不是';t在Docker for Windows上的本地主机(0.0.0.0)上启动(本机使用Hyper-V)

Nginx 我的docker容器不是';t在Docker for Windows上的本地主机(0.0.0.0)上启动(本机使用Hyper-V),nginx,docker,Nginx,Docker,下面我将介绍如何启动nginx docker容器(目前在步骤4中)。目前这是他们的输出: $ docker run --name docker-nginx -p 80:80 -d nginx d3ccb73a91985651ec61231bca9f9c716f0dec807e354a29eeef2144f883a01c $ docker ps CONTAINER ID IMAGE COMMAND CREATED

下面我将介绍如何启动nginx docker容器(目前在步骤4中)。目前这是他们的输出:

$ docker run --name docker-nginx -p 80:80 -d nginx
d3ccb73a91985651ec61231bca9f9c716f0dec807e354a29eeef2144f883a01c

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                         NAMES
b91f3ce26553        nginx               "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   docker-nginx
但当我运行它时,这是我的输出(注意到容器的不同IP):

为什么会发生这种情况?我怎样才能得到与Digital Ocean相同的结果?(正在本地主机上启动服务器)


编辑:我正在使用(最近发布的)它显然使用Hyper-V运行本机。我对
docker machine ls
的输出如下:

C:\>docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

C:\>
但当我运行它时,这是我的输出(注意到 (集装箱)

由于这是一台Windows机器,我假设您正在使用Docker工具箱Docker for Windows
10.0.75.2
boot2docker
虚拟机的IP

如果您使用的是Windows或Mac OS,那么您将需要某种形式的虚拟化 命令运行Docker。你刚才看到的IP就是那个轻量级虚拟机的IP

我怎样才能得到与Digital Ocean相同的结果?(获得 要在本地主机上启动的服务器)

使用Linux发行版!您还可以在设置中的
localhost
上启用公开容器端口:


尽管您在本地计算机中创建了容器。它们实际上是在不同的机器(虚拟机)上运行的

首先,检查docker机器(虚拟机)的IP是多少

然后运行
curl
命令(或打开浏览器)查看容器内
nginx
web服务器上的默认网站

curl http://192.168.99.100:80

如果您正在windows上使用虚拟机:

docker-machine ip default

当我第一次运行此命令时:
docker run-d-p80:80——命名docker tutorial docker101tutorial

我得到了这个错误:

docker:来自守护进程的错误响应:冲突。容器名称 容器“LONG\u container\u ID”已在使用“/docker tutorial”。 您必须删除(或重命名)该容器才能重用该容器 名字

因此,我尝试使用:
docker rm-f LONG\u container\u ID

然后我做了:
docker run-d-p3080:80——命名docker tutorial docker101tutorial

注意3080:80而不是80:80。。。如果我从docker桌面运行此选项,我会看到下面的默认选项:


您能告诉我们您的环境吗?窗户?linux?我正在使用docker for windows,它使用hyper-V本机运行,请在question@sgarcia转到Docker Settings>Network并选中
Expose container ports on localhost
,然后重新启动请将此评论作为答案发布,或使用此@Ali编辑您的答案,以便我可以将其标记为正确,因为这修复了它!我正在使用docker for windows,它使用hyper-V运行本机,请查看我对该问题的更新说明。我没有任何docker机器根据
docker machine ls
运行,但在docker for windows中,所有共容器都运行良好。没有虚拟化,根据此文档()您应该打开一个浏览器类型
http://docker
Docker完全是关于运行Linux容器的(Windows Server 2016案例除外)而且Windows不附带linux。因此Docker for Windows以虚拟化的形式带来了自己的linux。虚拟化仍然存在,但以一种更无缝、更少痛苦的形式。伙计,你救了我的命。
curl http://192.168.99.100:80
docker-machine ip default