关于如何以一致的、易于理解的和可移植的方式实现这一点,有几个长期存在的讨论。没有完整的解决方案,但我会链接到下面的讨论。
在任何情况下,您都希望尝试使用docker运行的--add-host选项将主机的ip地址添加到容器的/etc/host文件中。从那里连接到主机上的任何所需端口都很简单:
向容器主机文件添加条目
您可以使用一个或多个--add-host标志将其他主机添加到容器的/etc/hosts文件中。此示例为名为Docker的主机添加静态地址:
$ docker run --add-host=docker:10.180.0.1 --rm -it debian
$$ ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms
注意:有时需要连接到Docker主机,这意味着获取主机的IP地址。您可以使用以下shell命令来简化此过程:
$ alias hostip="ip route show 0.0.0.0/0 | grep -Eo 'via \S+' | awk '{ print $2 }'"
$ docker run --add-host=docker:$(hostip) --rm -it debian
文档:
https://docs.docker.com/engine/reference/commandline/run/
关于从容器访问主机的讨论;
问题内容: 如果我在某个主机上运行mysql数据库,并且该主机也正在运行docker容器:我如何从主机上运行的docker容器中访问mysql数据库? 例如,是否有一种方法可以将主机端口发布到容器(与docker run -p的作用相反)? 问题答案: 关于如何以一致的,易于理解的和可移植的方式执行此操作的问题已有很长时间的讨论。尚无完整的解决方案,但我会将您链接到下面的讨论。 无论如何,您都想尝
我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端
我在本地机器(Mac)上工作,其中有一个名为sqlvm的遗留虚拟机(这意味着我可以通过http://sqlvm:从本地主机访问这个虚拟机)。现在,我在应该连接到vm的同一个本地主机(我的Mac)中设置了几个docker容器(使用docker-compose)。< code>pymysql会引发一个异常: 如何将外部的“sqlvm”公开给内部 Docker 网络? 编辑:我尝试在yml文件中为相关容
我有一个关于这个问题的问题https://hub.docker.com/r/jupyter/scipy-notebook.我正在尝试使用docker compose运行此图像: 组成: Dockerfile 我用手够不着它http://locahost:8888 .... 网址。我使用Windows10作为主机,并尝试从这个docker compose和这些工作中访问其他服务。
问题内容: 我正在开发服务,并在那里使用docker compose来旋转诸如postgres,redis,elasticsearch之类的服务。我有一个基于RubyOnRails的Web应用程序,并从所有这些服务中进行读写操作。 这是我的 我可以在此网络中ping容器 到目前为止,一切都很好。现在我想在主机上的Rails应用程序上运行ruby,但是能够像目前这样使用url访问postgres实例
问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口