创建安装了 Docker 的 Vagrant 盒子

创建安装了 Docker 的 Vagrant 盒子

我正在尝试创建一个漂亮的游乐场码头工人流浪汉基于 Vagrant 的precise64盒子。 (代码可在 GitHub 上找到:rfkrocktk/docker-vagrant-playground

这是我的实例的 Puppet 配置依赖项:

# Puppet for Docker Vagrant Box
node default {
    # apt
    class { 'apt': }

    apt::source { 'docker':
        location => "http://get.docker.io/ubuntu",
        key => "36A1D7869245C8950F966E92D8576A8BA88D21E9",
        release => "docker",
        repos => "main",
        include_src => false
    }

    package { 'raring-kernel':
        name => 'linux-image-generic-lts-raring',
        ensure => present
    }

    package { 'lxc-docker':
        require => [apt::source["docker"], Package["raring-kernel"]]
    }
}

(这如下在 Ubuntu 12.04 LTS 上安装 Docker 的指南.)

不幸的是,我遇到了这方面的问题,因为 Docker 或多或少需要更高版本的内核(> = 3.9),这就是为什么该linux-image-generic-lts-raring包被声明为依赖项。也是有必要的跑步该内核能够正确使用 LXC(并强制使用 Docker)。

运行vagrant up或后vagrant provision,我重新启动盒子以便能够启动到新内核。

不幸的是,VirtualBox Guest Additions 似乎没有正确注册到 DKMS:

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

precise64有没有一种简单的方法可以让基于Raring 内核的盒子运行并正确安装?我希望能够快速开始使用为 Docker 实验做好准备的虚拟化环境。

答案1

显然,Phusion 打包了自己的 Ubuntu 12.04 Vagrant 盒子它运行所需的 3.8 内核,以便更轻松地使用 Docker。他们还提供内存和交换计算内核初始化参数以使这些功能可供 LXC 使用。

要使用这些盒子,只需更新 Vagrantfile 中的盒子名称和 URL:

# ...
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.box = "phusion-open-ubuntu-12.04-amd64"
    config.vm.box_url = "https://oss-binaries.phusionpassenger.com/vagrant/boxes/ubuntu-12.04.3-amd64-vbox.box"
    # ...
end

请注意,仍然需要像上面那样配置 Docker 包和存储库。

另请注意,为了解决 Hiera 警告,解决方案可以在另一个问题的这个答案中找到

现在,使用 Vagrant 开始使用 Docker 应该非常容易:

$ git clone [email protected]:rfkrocktk/docker-vagrant-playground.git
$ cd docker-vagrant-playground
$ vagrant up
$ vagrant ssh

希望这对将来的人有帮助。

相关内容