vagrant - 如何使用 vagrant 1.6 和 docker 提供者映射 docker 端口

标签 vagrant docker vagrantfile boot2docker

我目前正在尝试将我的 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 时,容器会正确启动,但是当我执行 docker ps 时,我可以看到端口尚未映射。

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

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

最佳答案

您的配置应该可以在 Linux 上运行,但如果您使用的是 Virtualbox(我假设您使用的是 Mac 或 Windows),那么您需要一个用于 VM 的 Vagrantfile 以将其发送到您的主机。

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

让我们假设它在相对于你当前 Vagrantfile 的 host-vm/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

关于vagrant - 如何使用 vagrant 1.6 和 docker 提供者映射 docker 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23530299/

相关文章:

Docker容器不断重启

docker - 如何打包 Vagrant/虚拟盒子虚拟机以加载到另一个系统

ssh - 在我的 VM 中我的 vagrant 根文件夹中看不到任何文件或文件夹

python - Docker文档中的Python缩进错误

vagrant - Windows 8.1 : Vagrant could not detect VirtualBox! 确保 VirtualBox 已正确安装

docker - 从 Vagrant 机器连接到 Redis Docker 容器

macos - Laravel Homestead 在 SSH 身份验证方法 : private key on mac 中挂起

mysql - 我如何知道我的 docker mysql 容器何时启动并且 mysql 已准备好接受查询?

laravel - 在 Vagrant VirtualBox 上启用 GUI - 未定义的局部变量

python - 如何响应 os.system 中的提示?