2
respostas

Usando docker como provider ao invés de virtual box

Bom dia. Eu gostaria muito de seguir no curso, mas não posso instalar o virtual box no meu mac. Por se tratar de um mac de trabalho e ter várias restroções. Hoje eu já consegui levantar alguns containers como : nginx, mysql. Mas eu ainda não consegui levantar um container do ubuntu simples. Sem utilizar dockerFile, ou compose, apenas usando a imagem simples do ubuntu. Hoje eu tenho o seguinte Vagrantfile do ubuntu

VAGRANTFILE_API_VERSION = "2"
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.provider :docker do |d|
     d.image = 'ubuntu'
     d.cmd = ["ls"]   
  end
end

Hoje usando docker se eu fizer algo como: docker container run -it ubuntu eu consigo levantar o container e acessa-lo em modo iterativo terminal: docker container run -it ubuntu root@7d26a4fc5192:/# dentro do container....

Como fazer a mesma coisa com o vagrant? Ao executar o "vagrant up --provider=docker" da impressão que o container levanta e depois morre em seguida pois não está fazendo nada. Eu sei que o container está sendo criado pois olhando o log do conatainer aparece a execução do comando "ls", exibindo as pastas dentro do container. Não estou sabendo usar a opção "create_args" e a "CMD" alguém pode me explicar como fazer para usar o Vagrant com docker provider? Já pesquisei bastante na internet mas ainda sim estou travado ao conseguir executar os comandos do docker via Vagrant. Quem puder dar uma luz ficarei muito grato.

2 respostas

Olá Rodrigo, tudo bem ?! Realmente o container é executado e depois para pois não tem nenhum serviço sendo executado. Quando fazemos "docker container run -it ubuntu" o "-it" nos garante entrar em modo interativo e temos acesso ao shell mas, assim que saímos o container é parado e isso deve estar acontecendo no Vagrantfile pois, assim que o comando "ls" é executado o container é interrompido.

Pesquisei aqui e econtrei uma solução que pode te ajudar. Veja no link abaixo que o autor cria um Dockerfile com as configurações necessárias para subir um Ubuntu rodando o ssh com as chaves do Vagrant. É um tanto trabalhoso mas, se você não pode rodar o Virtual Box acrecito que seja uma alternativa.

https://dev.to/mattdark/using-docker-as-provider-for-vagrant-10me

Veja se te ajuda !

Oi Mario tudo ótimo por aqui obrigado, e vc tudo bem? Cara muito obrigado pela ajuda. Eu já tinha visto possibilidades com DockerFile, mas eu estava realmente tentando fazer o passo a passo, fazer funcionar primeiro essa parte básica de levantar o container e acessar ele. Mas se não tem outra chance eu vou partir pro DockerFile mesmo que parece ser uma outra alternativa. Vou seguir o tutorial que vc comentou. Obrigado :)