泊坞窗(www.docker.io)看起来棒极了。 然而,在Mac上安装VirtualBox的,流浪......终于泊坞后,我发现这是不可能的访问从另一台计算机在泊坞窗容器中运行的服务(或者从Mac上的终端会话)。 我试图访问该服务是Redis的。
这个问题似乎是有分配给多克尔容器的IP地址的路由。 在这种情况下,容器的IP地址为172.16.42.2,而Mac的IP是196.168.0.3。
一对夫妇的注意事项:
- 它可以访问它 - 但只能从VirtualBox的会话中。 这可以通过使用Redis的-CLI -h 172.16.42.2 -p 6379来完成。
- 企图得到的VagrantFile,但这并没有解决这个问题:我已经加入“桥接config.vm.network”。
通过游民产生的VM确实是孤立的,为了从主机访问它,你可以分配一个专用网络,以它。 而不是做的config.vm.network :bridged
,尝试config.vm.network :private_network, ip: "192.168.50.4"
它应该做的伎俩
然而,这将只允许您访问虚拟机本身,而不是容器。
为了做到这一点,运行的容器中时,你可以添加-p
选项
例如: docker run -d -p 8989 base nc -lkp 8989
这将运行一个netcat的容器内监听8989和公开暴露的端口。 由于它也与-d运行,容器将在分离模式,并且唯一输出将容器的ID
为了揭露港口,码头工人做一个简单的NAT。 为了了解真实的端口,可以
做docker port <ID of the container> 8989
netcat的将是可利用从MAC在192.168.50.4:<结果>
我刚写的如何使用host-only网络和TCP路由,使这个很容易的教程。 这样,您就不必每一个具体的端口映射。
http://ispyker.blogspot.com/2014/04/accessing-docker-container-private.html
要点...
1)添加仅主机网络虚拟框2)告诉boot2docker VM有host-only网络3)上的适配器添加IP新boot2docker VM仅主机网络适配器4)路由所有的Mac OS X流量泊坞窗容器子网到boot2docker VM仅主机网络IP
实际步骤与输出,所以你可以比较你所看到的,你跟着他们的博客。
我从Dockerfile安装Tomcat和转发,为6060使用vagrant`s端口转发。 这是为我工作的步骤:
vagrant provision
vagrant up
vagrant ssh
box_name$ docker run -i -t -p 8080:8080 bsb_tomcat6 /bin/bash
能够看到Tomcat的与本地主机上运行:6060,因为我在做Vagrantfile端口转发6060
你也可以定义PRIVATE_NETWORK和FORWARD_DOCKER_PORTS环境变量来访问你的服务,在泊坞窗容器运行:
$ vagrant halt
$ export PRIVATE_NETWORK=192.168.50.4
$ export FORWARD_DOCKER_PORTS=1
$ vagrant up
在我的情况,我可以从Mac的使用Postgres的访问
$ telnet 192.168.50.4 49154
找出实际的应用端口,您可以使用
$ sudo docker port 1854499c6547 5432
0.0.0.0:49154
文章来源: Docker container - how to configure so it gets a viable IP address when running in vagrant?