关于如何启动nginx docker容器的Digital Ocean's tutorial之后(目前在第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):
C:\>docker run --name docker-nginx -p 80:80 -d nginx
d3ccb73a91985651ec61231bca9f9c716f0dec807e354a29eeef2144f883a01c
C:\>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3ccb73a9198 nginx "nginx -g 'daemon off" 14 hours ago Up 2 seconds 10.0.75.2:80->80/tcp, 443/tcp docker-nginx
为什么会这样?我怎样才能获得与Digital Ocean相同的结果? (让服务器在localhost上启动)
修改:我正在使用Docker for windows(最近发布的)显然使用Hyper-V运行本机。 docker-machine ls
的输出是:
C:\>docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
C:\>
答案 0 :(得分:10)
但是当我运行它时,这是我的输出(注意到不同的IP 容器)
由于这是一台Windows机器,我假设你正在使用 Docker Toolbox Docker for Windows。 10.0.75.2
是 虚拟机的IP。boot2docker
如果您使用的是Windows或Mac OS,则需要使用某种形式的虚拟化 为了运行Docker。您刚刚看到的IP是该轻量级虚拟机的IP。
我怎样才能获得与Digital Ocean相同的结果? (获得 服务器在localhost上启动)
使用Linux发行版!您也可以在Docker For Windows 设置中的localhost
上启用 Expose容器端口:
答案 1 :(得分:6)
尽管您在本地计算机中创建了容器。这些实际上是在不同的机器(虚拟机)上运行的
首先,检查您的docker机器(虚拟机)的IP是什么
$docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100
然后运行curl
命令(或打开浏览器)以查看容器内nginx
Web服务器上的默认网站
curl http://192.168.99.100:80
答案 2 :(得分:0)
答案 3 :(得分:0)
当我第一次运行此命令时:docker run -d -p 80:80 --name docker-tutorial docker101tutorial
我收到此错误:
docker:来自守护程序的错误响应:冲突。容器名称 容器“ LONG_CONTAINER_ID”已使用“ / docker-tutorial”。 您必须删除(或重命名)该容器才能重用该容器 名称。
因此,我尝试使用docker rm -f LONG_CONTAINER_ID
然后我做了:docker run -d -p 3080:80 --name docker-tutorial docker101tutorial
请注意 3080:80 而不是 80:80 ...如果我是从docker桌面上运行此命令,则会在下面看到此默认选项: