【问题标题】:How to access docker images in web?如何在 Web 中访问 docker 图像?
【发布时间】:2020-04-06 19:28:27
【问题描述】:

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

【问题讨论】:

  • 您是如何尝试访问浏览器上的应用程序的?确保您使用的是http://localhost:8000

标签: docker docker-machine


【解决方案1】:

由于您使用了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) 必须与容器内的应用程序正在侦听的端口匹配。因此,如果您根据此处的其他答案更改了应用中的此端口,则需要更改上面的目标端口。

【讨论】:

  • docker-machine 环境显示192.168.99.100:2376。我应该把它放到 docker run 吗?
  • @munih1 不,你应该在浏览器中输入 192.168.99.100:8000。
【解决方案2】:

首先,检查容器是否真的在运行,使用命令:docker ps

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

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

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

【讨论】:

  • 使用docker ps时可以看到列出的容器
  • 我提供了一些新的细节
【解决方案3】:

这不是 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

【讨论】:

  • 未知的速记标志:'b' in -b :(
  • 我刚刚将 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] 添加到 docker 文件中。 docker容器运行image_id,还是不行:(
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多