Criando uma caixa Vagrant com o Docker instalado

2

Estou tentando criar um bom playground para o Docker Vagrant baseado na caixa precise64 do Vagrant. (O código está disponível no GitHub: rfkrocktk / docker-vagrant-playground )

Aqui estão minhas dependências de provisionamento do Puppet para a instância:

# 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"]]
    }
}

(Isso segue Guia do Docker sobre instalação no Ubuntu 12.04 LTS .)

Infelizmente, estou tendo problemas com isso, já que o Docker mais ou menos requer um kernel posterior (> = 3.9), e é por isso que o pacote linux-image-generic-lts-raring é declarado como uma dependência. Também é necessário estar rodando este kernel para poder usar o LXC (e pelo mandril, Docker) corretamente.

Depois de executar vagrant up ou vagrant provision , eu reinicio a caixa para poder inicializar no novo kernel.

Infelizmente, o VirtualBox Guest Additions não parece estar registrado DKMS corretamente:

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

Existe uma maneira simples de obter uma caixa baseada em precise64 com o kernel Raring sendo executado e instalado corretamente? Eu gostaria de poder começar rapidamente com um ambiente virtualizado pronto para a experimentação do Docker.

    
por Naftuli Kay 01.04.2014 / 07:56

1 resposta

2

Evidentemente, Phusion empacota suas próprias caixas Vagrant do Ubuntu 12.04 que são executadas o kernel 3.8 necessário para facilitar o uso do Docker. Eles também fornecem os parâmetros de inicialização do kernel memória e troca de contas para fazer esses recursos disponíveis para o LXC.

Para usar essas caixas, basta atualizar o nome da caixa e o URL no seu Vagrantfile:

# ...
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

Observe que ainda é necessário provisionar o pacote e o repositório do Docker como acima.

Note também que, para resolver o aviso Hiera, uma solução pode ser encontrada nesta resposta em outra pergunta .

Agora, deve ser extremamente fácil começar a brincar com o Docker usando o Vagrant:

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

Espero que isso ajude alguém no futuro.

    
por 01.04.2014 / 08:46