微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从 docker 访问本地主机

如何解决无法从 docker 访问本地主机

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

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

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

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

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

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

解决方法

我有点不确定您在问什么,但您似乎需要公开您的端口。当在 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。