在Mac主机上的Docker-machine的容器联系人应用程序

我有一台Docker-machine的Mac笔记本电脑,用nginx和其他容器上的其他应用程序运行一个容器。 我可以通过主机虚拟机 – >通过nginx容器 – >到应用程序容器中联系我的应用程序。

我想让应用程序联系在我的Mac上运行的另一个应用程序(用于debugging)。 这可能吗?

是的,您可以通过TCP / IP联系docker机VM主机上的服务。 默认的泊坞窗虚拟机有两个networking接口连接到它们。

适配器1

第一个networking适配器连接到NATnetworking以访问互联网。 这提供了一个path到您的笔记本电脑,这通常是en0主适配器地址

 → ifconfig en0 | grep "inet " inet 192.168.10.33 netmask 0xffffff00 broadcast 192.168.10.255 

您可以在Docker虚拟机或容器中使用此地址来访问在您的Mac上运行的服务。

 docker@default-docker:~$ curl http://192.168.10.33:3000/time {"time":{"now":1454987348431,"start":1454635891001}} 

适配器2

还有一个用于dockerpipe理的仅用于主机的适配器。 VirtualBox中主机专用适配器的名称将映射到主机上的接口。

 → VBoxManage showvminfo default | grep "NIC 2" NIC 2: MAC: 0800270D841E, Attachment: Host-only Interface 'vboxnet3', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none 

您的Mac将有一个相应的界面

 → ifconfig vboxnet3 vboxnet3: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 ether 0a:00:27:00:00:03 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255 

你也可以使用这个地址。

 docker@default-docker:~$ curl http://192.168.99.1:3000/time {"time":{"now":1454987348590,"start":1454635891001}} 

只有主机适配器地址是有用的,如果你的networkingIP变化,你需要在容器中configuration静态的东西,主机适配器地址将保持一致(除非你毁了你的虚拟机,那么它可能会改变)

对的,这是可能的。 一个简单的方法是使用 – --link选项

 docker run -ti --link mysql:mysql <Docker_image> 

笔记:

按照@Matt的build议,你也可以用最新的docker构buildnetworking。

请参阅用户定义的networking