【问题标题】:Not able to access the container over localhost无法通过 localhost 访问容器
【发布时间】:2020-05-06 14:15:31
【问题描述】:

这里是 Docker 初学者。

我创建了一个简单的 asp.net web 应用程序,它在运行时会显示应用程序的默认页面。

使用 docker build 命令,我从中创建一个映像,并进一步使用 docker run 命令docker run -d --name {containername} -p 81:8080 {imageid}。现在,当我尝试通过浏览器上的本地主机(即http://localhost:81/)访问容器映像时,我收到“无法访问站点”错误。我希望通过暴露的 81 端口打开相同的默认应用程序页面。

我的 docker 客户端是 windows/amd,docker 服务器是 linux/amd。我使用的docker版本是19.03.08

使用 docker inspect 我可以看到

"PortBindings": {
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "81"
                    }
                ]
            },

和 "IPAddress": "" 在网络设置中。

docker ps and docker ps -a

如果有任何帮助或建议,我将不胜感激。

【问题讨论】:

  • http://127.0.0.1:81/ 工作吗?
  • @hmm 不,同样的问题。
  • 您的应用程序在哪个端口上运行,我认为不是 8080?
  • 您是在 Windows 上使用 Docker Toolbox,还是使用 Docker Desktop 应用程序?当您启动应用程序时,它是否会打印“正在侦听...”消息?
  • @Adiii 和 David Maze:在对 Docker 文件进行一些更改后,现在我可以让容器处于运行状态。我可以在 docker 桌面上看到相同的内容(容器处于运行状态)。此外,端口 8080 已暴露(请参阅链接中的图片)。尽管现在我收到“页面无法正常工作。本地主机没有发送任何数据”错误。 [链接]imgur.com/a/JY74TAL

标签: docker docker-compose dockerfile docker-run docker-command


【解决方案1】:

从所附的屏幕截图中,您的容器似乎在启动时就被杀死了。您应该在容器中运行一个进程以保持其正常运行。只有这样你才能通过主机 ip:port 访问 在这种情况下http://localhost:81

在您的docker ps -a 中,状态已退出。理想情况下,如果您的容器启动并运行,它应该是这样的。

docker ps

CONTAINER ID        IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES
4c01db0b339c        ubuntu:12.04                 bash                   17 seconds ago       Up 16 seconds

【讨论】:

  • 谢谢。我让容器处于运行状态,不再立即退出。但是当我在浏览器中查看它时,我得到“这个页面不工作。本地主机没有发送任何数据”。 imgur.com/a/JY74TAL
  • 尝试使用 docker exec -it containerid bash 登录到您的容器外壳,这将带您进入容器外壳。尝试检查您的进程是否按预期运行并尝试 netcat 到您的容器端口,nc -zv localhost 8080
猜你喜欢
  • 2019-07-18
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2022-06-29
相关资源
最近更新 更多