如何从Vagrant VM中访问Docker容器

我有一个提供两个Docker容器的Vagrant设置。 Docker容器启动没有问题。 在Vagrant VM中,我可以运行docker ps并查看两个容器连接到正确的端口。 如果我运行docker logs XXX我看到我的Redis和Mongo守护进程都在运行。 但是,从stream浪者箱子本身,我不能telnet或访问任何运行的服务。 我总是得到一个拒绝的连接。 我如何让Vagrant虚拟机看到在Docker中运行的服务?

我的Vagrantfile看起来像:

 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.host_name = "trusty" config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" config.vm.box = "trusty64" config.vm.network :private_network, ip: "192.168.10.12" config.vm.network :forwarded_port, guest: 6379, host: 6379 config.vm.network :forwarded_port, guest: 27017, host: 27017 config.vm.provision "docker" do |d| d.pull_images 'dockerfile/redis' d.pull_images 'dockerfile/mongodb' d.run 'dockerfile/redis', ports: ['6379:6379'], name: 'redis', expose: [6379] d.run 'dockerfile/mongodb', ports: ['27017:27017'], name: 'mongodb' end end 

在Dockerconfiguration器的Vagrant文​​档中没有提到ports 。 我build议你使用args

更换

 d.run 'dockerfile/redis', ports: ['6379:6379'], name: 'redis', expose: [6379] d.run 'dockerfile/mongodb', ports: ['27017:27017'], name: 'mongodb' 

 d.run 'dockerfile/redis', args: "-p 6379:6379", name: 'redis' d.run 'dockerfile/mongodb', args: "-p 27017:27017", name: 'mongodb'