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