Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
如何在web中访问docker图像?_Docker_Docker Machine - Fatal编程技术网

如何在web中访问docker图像?

如何在web中访问docker图像?,docker,docker-machine,Docker,Docker Machine,我是docker的新手,我正在努力运行一个我想在本地主机中访问的映像。 这是我用的订单 1.docker-machine start default (starting vm) 2.docker-machine env 3.(coping the @for command which has displayed and paste to my terminal) 4.docker run -d -p 127.0.0.1:8000:80 image_id it generates the lon

我是docker的新手,我正在努力运行一个我想在本地主机中访问的映像。 这是我用的订单

1.docker-machine start default (starting vm)
2.docker-machine env
3.(coping the @for command which has displayed and paste to my terminal)
4.docker run -d -p 127.0.0.1:8000:80 image_id
 it generates the long string, container I guess
5.docker container run image_id - this says that "Application startup complete."
之后,我想使用上面的IP在我的浏览器中访问它。无法显示该页。我做错了什么?我是windows用户

这也是运行最后一个命令后的终端消息:

[2020-04-06 19:50:15 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-04-06 19:50:15 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
[2020-04-06 19:50:15 +0000] [1] [INFO] Using worker: uvicorn.workers.UvicornWorker
[2020-04-06 19:50:15 +0000] [7] [INFO] Booting worker with pid: 7
[2020-04-06 19:50:15 +0000] [7] [INFO] Started server process [7]
[2020-04-06 19:50:15 +0000] [7] [INFO] Waiting for application startup.
[2020-04-06 19:50:15 +0000] [7] [INFO] Application startup complete.

首先,使用命令检查容器是否正在实际运行:
docker ps

如果您没有看到列出的容器,则它必须已退出。检查日志以进行故障排除

如果确实看到列出的容器,请确保在web浏览器中转到
localhost:8000


如果你已经做到了这一点,那么还有一些我无法从这篇文章中解读的潜在问题。

这不是Docker问题

您需要在gunicorn配置中绑定
0.0.0.0:8000

如果在dockerfile中使用CMD运行,则更新CMD(添加-b 0.0.0.0:8000):

然后使用以下命令访问:

http://localhost:8000

有关更多详细信息,请参阅。

由于您使用了
docker machine
,请查看
docker machine env
的输出以获取docker VM的IP地址。然后连接到发布端口上的IP地址。通常情况下,示例中的端口
8000
,但是您已绑定到环回接口,该接口在运行时无法从外部访问:

docker run -d -p 127.0.0.1:8000:80 image_id
因此,找到该容器(
docker container ls
),在容器id或名称上停止它(
docker container stop
),并使用以下内容启动一个新容器:

docker run -d -p 8000:80 image_id

然后连接到端口8000上docker机器VM的IP地址以访问您的应用程序。请注意,上述命令中的第二个端口号(
80
)必须与容器中的应用程序正在侦听的端口匹配。因此,如果您根据此处的其他答案更改了应用程序中的此端口,则需要更改上面的目标端口。

您如何尝试在浏览器上访问应用程序?确保您正在使用
http://localhost:8000
使用docker psI时,我可以看到列出的容器。我们提供了一些新的详细信息-b中的已知速记标志:“b”:(我刚刚在docker文件中添加了CMD[“python”、“manage.py”、“runserver”、“0.0.0:8000”)。docker容器运行图像\u id,仍然不起作用:(docker machine env显示。我应该将其放入docker运行吗?@munih1不,您应该在浏览器中放入192.168.99.100:8000。
docker run -d -p 8000:80 image_id