【问题标题】:Can't access localhost from docker无法从 docker 访问 localhost
【发布时间】:2021-07-05 19:20:38
【问题描述】:

我是这个 docker 世界的初学者,因为使用 apache 和其他东西设置所有这些“localhost”非常痛苦,所以 docker 也是如此。

我不知道是不是我,因为但我尝试在其他帖子的帮助下解决我的问题,但几个小时后我放弃并寻求你的帮助,因为有些帖子对我来说无法理解(帖子包括桥接东西 NAT iptables docker-machine 等)

几个小时后,我只是尝试访问 localhost:5000 上的 apache 网站,该网站是在 docker 中使用 service apache2 start 启动的,如果我在这个 docker 中执行 w3m localhost 我可以看到它正在运行。 但是当我尝试使用浏览器访问它时没有响应。 我也试过这个命令:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' bce97a49b68c
172.17.0.2

:5000 的地址没有访问权限,我什至把它放在了主机文件中。没有成功。

如果有人对这个问题有最后的解决方案,似乎有很多,而且在文章的博客中一切似乎都很简单(我什至用 docker-composer 尝试了一些东西,它删除了 docker 我不得不重新安装整个东西)

【问题讨论】:

  • 您能告诉我们您是如何启动容器的吗?
  • @SoftwareEngineer 我用 docker run -d -p 5000:5000 edurekain/php5.5apache 启动它,一旦启动,我用 gui 仪表板访问 cli

标签: docker localhost wsl-2


【解决方案1】:

我有点不确定你在问什么,但似乎你可能需要公开你的端口。在 Docker 中运行某些东西时,它会在自己的小盒子中运行,与外界无关——你机器的其余部分。如果你想连接端口——比如访问在 Docker 容器中运行的 Web 服务器,你需要在运行 Docker 容器时使用-p--publish 选项。安装驱动器等也有类似的命令。

这是我在 Docker 中本地运行的数据库中的一个示例:

docker run \
    --publish=7474:7474 \
    --volume=/home/me/logs:/logs \
    --env=NEO4J_AUTH=none \
    neo4j:4.2.

这说:

  • 允许外部系统从docker容器外的7474端口访问Docker容器内的7474端口
  • 将外部系统的/home/me/logs文件夹挂载为Docker容器内的/logs
  • 将Docker容器内的环境变量NEO4J_AUTH设置为none

【讨论】:

  • 您好,感谢您的回复,现在更清楚了。当您说它允许系统访问端口 7474 时,是否意味着它在 wsl2 内部?我必须再次转发它才能在 Windows 中访问它?
  • 非常感谢,现在可以使用了!我想知道为什么我看到所有这些命令来访问 IP 地址和东西。祝你有美好的一天。
  • 嗨@LeVoltaireDesChamps,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 2019-07-18
  • 2021-08-19
  • 2020-09-30
  • 2016-04-10
相关资源
最近更新 更多