Docker (www.docker.io) 看起来棒极了。然而,安装 VirtualBox 后,Vagrant
...最后是 Mac 上的 Docker,我发现无法从另一台计算机(或从 Mac 上的终端会话)访问 Docker 容器中运行的服务。我尝试访问的服务是 Redis。
问题似乎是没有到分配给 Docker 容器的 IP 地址的路由。在本例中,容器的 IP 为 172.16.42.2,而 Mac 的 IP 为 196.168.0.3。
一些注意事项:
- 可以访问它 - 但只能从 VirtualBox 会话中访问。这可以使用 redis-cli -h 172.16.42.2 -p 6379 来完成。
- 我已将“config.vm.network :bridged”添加到 VagrantFile 中以尝试获取,但这并没有解决问题。
vagrant 生成的虚拟机确实是隔离的,为了从您的主机访问它,您可以为其分配专用网络。
而不是做config.vm.network :bridged
, try config.vm.network :private_network, ip: "192.168.50.4"
,应该可以解决问题
但是,这仅允许您访问虚拟机本身,而不能访问容器。
为此,在运行容器时,您可以添加-p
option
ex: docker run -d -p 8989 base nc -lkp 8989
这将在容器内运行一个 netcat 监听 8989 并公开暴露该端口。由于它也使用 -d 运行,因此容器将处于分离模式,唯一的输出将是容器的 ID
为了暴露端口,Docker 做了一个简单的 NAT。为了了解真实的端口,您可以
do docker port <ID of the container> 8989
Netcat 将从 192.168.50.4 的 Mac 上可用:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)