如何访问网络中的 docker 个图像?

How to access docker images in web?

我是 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

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

如果您确实看到列出了您的容器,请确保您要在网络浏览器中localhost:8000

如果你已经做到了这一步,还有一些我无法从中解读的其他潜在问题 post。

这不是 Docker 问题。

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

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

CMD gunicorn -b 0.0.0.0:8000

然后使用这个访问:

http://localhost:8000

参考this了解更多详情。

由于您使用了 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),停止它(docker container stop 在容器 ID 或名称上),然后启动一个新容器:

docker run -d -p 8000:80 image_id

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