我一直在玩Docker一段时间(通过Vagrant在OSX上),这非常好用。为了访问我在docker容器中运行的应用程序,我必须设置Vagrant以使用静态IP(“private_network”设置)。
虽然这很好用,但我觉得使用boot2docker的新方法更简单,更方便,因为我可以直接在OSX中运行docker。但是,如果我使用通常的端口转发运行docker,我会收到此错误:
docker run -p :5672 -p :15672 mikaelhg/docker-rabbitmq
2014/02/09 10:12:47 Error: start: Cannot start container fecd0f0225f49a889e63e9b113bff36305e9b9ab146ada6730d6cfffe9a10e0b: Process could not be started
那么如果我明确地将它映射到不同的主机端口,它就会启动
docker run -p 5000:5672 -p 15000:15672 mikaelhg/docker-rabbitmq
但是我无法在我的OSX主机中打开它。我知道这个设置与Vagrant不同,因为它不使用静态IP而是使用NAT但不知何故我无法找到有关如何从OSX主机访问我的应用程序的正确文档。
有人能指出正确的文档或给我一个示例我需要使用哪些设置来让boot2docker为我设置portforwarding?
答案 0 :(得分:7)
如果您使用的是VirtualBox,请配置端口转发,如:
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port5000,tcp,,5000,,5672"
$ VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port5000,udp,,5000,,5672"
了解更多:
http://www.deadcodersociety.org/blog/forwarding-a-range-of-ports-in-virtualbox/
https://github.com/dotcloud/docker/issues/4007#issuecomment-34573044