Docker(www.docker.io)看起来很棒。但是,在Mac上安装VirtualBox,Vagrant …和Docker之后,我发现无法从另一台计算机(或从Mac上的终端会话)访问Docker容器中运行的服务。我尝试访问的服务是Redis。
问题似乎是没有路由到分配给Docker容器的IP地址。在这种情况下,容器的IP为172.16.42.2,而Mac的IP为196.168.0.3。
几个注意事项:
由vagrant生成的VM实际上是隔离的,为了从主机访问它,您可以为其分配专用网络。而不是config.vm.network :bridged尝试config.vm.network :private_network, ip: "192.168.50.4",它应该可以解决问题
config.vm.network :bridged
config.vm.network :private_network, ip: "192.168.50.4"
但是,这仅允许您访问VM本身,而不是容器。 为此,在运行容器时,可以添加-p选项
-p
例如: docker run -d -p 8989 base nc -lkp 8989
docker run -d -p 8989 base nc -lkp 8989
这将在容器中的8989上运行网猫,并公开暴露该端口。由于它也与-d运行,因此容器将处于分离模式,唯一的输出将是容器的ID
为了公开端口,Docker做了一个简单的NAT。为了知道真实的端口,您可以
做 docker port <ID of the container> 8989
docker port <ID of the container> 8989
Netcat将可从192.168.50.4的Mac上获得:<结果>