一尘不染

Docker容器-如何配置以使其在无业游民中运行时获得可行的IP地址?

docker

Docker(www.docker.io)看起来很棒。但是,在Mac上安装VirtualBox,Vagrant
…和Docker之后,我发现无法从另一台计算机(或从Mac上的终端会话)访问Docker容器中运行的服务。我尝试访问的服务是Redis。

问题似乎是没有路由到分配给Docker容器的IP地址。在这种情况下,容器的IP为172.16.42.2,而Mac的IP为196.168.0.3。

几个注意事项:

  1. 可以访问它-但只能在VirtualBox会话中访问。这可以使用redis-cli -h 172.16.42.2 -p 6379完成。
  2. 我已经将“ config.vm.network:bridged”添加到VagrantFile中,以尝试获取该文件,但这并不能解决问题。

阅读 257

收藏
2020-06-17

共1个答案

一尘不染

由vagrant生成的VM实际上是隔离的,为了从主机访问它,您可以为其分配专用网络。而不是config.vm.network :bridged尝试config.vm.network :private_network, ip: "192.168.50.4",它应该可以解决问题

但是,这仅允许您访问VM本身,而不是容器。
为此,在运行容器时,可以添加-p选项

例如: docker run -d -p 8989 base nc -lkp 8989

这将在容器中的8989上运行网猫,并公开暴露该端口。由于它也与-d运行,因此容器将处于分离模式,唯一的输出将是容器的ID

为了公开端口,Docker做了一个简单的NAT。为了知道真实的端口,您可以

docker port <ID of the container> 8989

Netcat将可从192.168.50.4的Mac上获得:<结果>

2020-06-17