【问题标题】:How to access Docker containers from within a Vagrant VM如何从 Vagrant VM 中访问 Docker 容器
【发布时间】:2014-06-06 21:22:43
【问题描述】:

我有一个配置两个 Docker 容器的 Vagrant 设置。 Docker 容器启动没有问题。在 Vagrant VM 中,我可以运行 docker ps 并查看两个容器都连接到正确的端口。如果我运行docker logs XXX,我会看到我的 Redis 和 Mongo 守护程序都在运行。但是从 Vagrant 盒子本身我无法远程登录或访问任何一个正在运行的服务。我总是被拒绝连接。如何让 Vagrant VM 看到 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 

【问题讨论】:

    标签: vagrant docker vagrantfile boot2docker


    【解决方案1】:

    Docker provisioner 的 Vagrant 文档中没有提到 ports。 我建议你改用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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2022-06-16
      • 2017-02-25
      • 2018-04-14
      相关资源
      最近更新 更多