如何使用vagrant 1.6和docker提供商来映射docker端口

我正在试图将我的docker容器端口从容器映射到主机(boot2docker)。 最终目标是将这些端口映射到我的物理机器,但一次只能一步。

我的Vagrantfile目前看起来像:

Vagrant.configure("2") do |config| config.vm.define "app1" do |a| a.vm.provider "docker" do |d| d.build_dir = "dockers/app1" d.name = "app1" d.ports << "8080:8080" d.ports << "8443:8443" d.volumes << "/vagrant/data/app1:/var/app1" end end config.vm.define "app2" do |a| a.vm.provider "docker" do |d| d.build_dir = "dockers/app2" d.name = "app2" d.ports << "8081:8081" d.link("app1:app1") end end end 

当我运行vagrant up app1 --provider=docker的容器正确地旋转,但是当我做一个dockerps我可以看到,端口尚未映射。

 0.0.0.0:2222->22/tcp, 8080/tcp, 8443/tcp 

我正在使用VirtualBox,所以我用它来将我的物理机器8080端口转发到主机(boot2docker) 8080

你的configuration应该可以在Linux上运行,但是如果你使用的是Virtualbox(我假设你在Mac或者Windows上),那么你需要一个Vagrant文​​件给你的虚拟机。

 Vagrant.configure("2") do |config| config.vm.box = "busybox" config.vm.provider "virtualbox" do |v| v.memory = 768 v.cpus = 2 end config.vm.network :forwarded_port, guest: 8080, host: 8080 end 

让我们假装在host-vm / Vagrantfile相对于你当前的Vagrantfile。 所以你目前的Vagrantfile应该如下所示:

 Vagrant.configure("2") do |config| config.vm.define "app1" do |a| a.vm.provider "docker" do |d| d.vagrant_vagrantfile = "host-vm/Vagrantfile" d.build_dir = "dockers/app1" d.name = "app1" d.ports = ["8080:8080"] d.ports = ["8443:8443"] d.create_args = ["-v", "/vagrant/data/app1:/var/app1"] end end config.vm.define "app2" do |a| a.vm.provider "docker" do |d| d.vagrant_vagrantfile = "host-vm/Vagrantfile" d.build_dir = "dockers/app2" d.name = "app2" d.ports = ["8081:8081"] d.link("app1:app1") end end end