Ubuntu

創建一個安裝了 Docker 的 Vagrant 盒子

  • April 1, 2014

我正在嘗試基於 Vagrant 的盒子在Vagrant中為Docker創建一個不錯的遊樂場。(程式碼在 GitHub 上可用:rfkrocktk/docker-vagrant-playgroundprecise64

這是我的實例的 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"]]
   }
}

(這遵循Docker 關於在 Ubuntu 12.04 LTS 上安裝的指南。)

不幸的是,我遇到了這個問題,因為 Docker 或多或少需要更高版本的核心(> = 3.9),這就是為什麼將linux-image-generic-lts-raring包聲明為依賴項的原因。還必須執行此核心才能正確使用 LXC(以及通過禁令,Docker)。

執行vagrant upor後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

有沒有一種簡單的方法來獲得一個基於precise64Raring 核心執行並正確安裝的盒子?我希望能夠快速開始使用準備好進行 Docker 實驗的虛擬化環境。

顯然,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 警告,可以在 this answer on another question 中找到解決方案。

現在,使用 Vagrant 開始使用 Docker 應該非常容易:

$ git clone git@github.com:rfkrocktk/docker-vagrant-playground.git
$ cd docker-vagrant-playground
$ vagrant up
$ vagrant ssh

希望這對將來的某人有所幫助。

引用自:https://unix.stackexchange.com/questions/122515