加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用Vagrant Docker提供程序从boot2docker转发端口

发布时间:2020-12-16 03:54:20 所属栏目:安全 来源:网络整理
导读:我试图利用Vagrant 1.6的Docker提供商,我似乎遇到了一个障碍.我可以成功地启动Docker容器和客户机操作系统,但是我无法从主机操作系统访问我在容器内引入的服务.这是我的Vagrantfile: VAGRANTFILE_API_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSI

我试图利用Vagrant 1.6的Docker提供商,我似乎遇到了一个障碍.我可以成功地启动Docker容器和客户机操作系统,但是我无法从主机操作系统访问我在容器内引入的服务.这是我的Vagrantfile:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.network :forwarded_port,guest: 8000,host: 8000

  config.vm.define "icecast" do |v|
    v.vm.provider "docker" do |d|
      d.image = "moul/icecast"
      d.ports = ["8000:8000"]

      d.env = {
        # SOURCE_PASSWORD: 'password',ADMIN_PASSWORD: 'password',# PASSWORD: 'password',# RELAY_PASSWORD: 'password'
      }
    end
  end
end

我的理解是,在OS X上运行vagrant -provider = docker将启动运行boot2docker的VM,然后运行我的容器.运行流氓码头日志似乎确认我的容器已经创建并且服务启动了,但现在我无法为我的生活找出如何从我的OS X主机访问服务.如果我使用标准的VirtualBox提供程序,我希望config.vm.network:forwarding_port指令来处理转发,但添加似乎并没有什么区别.

我需要做些什么才能从我的OS X主机访问这项服务?

更新:作为参考,这里是图像的Dockerfile:https://github.com/moul/docker-icecast/blob/master/Dockerfile

最佳答案
好的,所以我终于弄清楚了,结果是解决方案是根本不使用boot2docker.基于一些潜水,我通过Vagrant来源,阅读问题和重新观察Docker提供商介绍视频,结果是您需要使用代理VM托管您的容器而不是boot2docker.

要设置这个,我修改了我的Vagrantfile,为vagrant_vagrantfile添加一个配置选项:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "icecast" do |v|
    v.vm.provider "docker" do |d|
      d.image = "moul/icecast"
      d.ports = ["8000:8000"]

      d.env = {
        # SOURCE_PASSWORD: 'password',# RELAY_PASSWORD: 'password'
      }

      d.vagrant_vagrantfile = "./Vagrantfile.proxy"
    end
  end
end

然后我添加了一个Vagrant将用来启动代理VM的文件(Vagrantfile.proxy):

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.provision "docker"
  config.vm.provision "shell",inline:
    "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill"

  config.vm.network :forwarded_port,host: 8000
end

使用Docker配置程序将自动为您在代理VM上安装Docker.内联shell脚本强制Vagrant重新登录到盒子中,以便它可以在Docker安装后使用.最后,我在这个Vagrantfile中转发我需要的端口,而不是原始端口(同时仍然使用原始端口配置选项).

就像使用默认的boot2docker策略一样,Vagrant将足够聪明地重用代理VM的现有实例来使用它的任何图像.

希望这将有助于有人在路上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读