Como adicionar Docker containers ao seu EVE-NG de forma simples, rápida e gráfica – Blog CCNA
Como prometido, segue aqui a "receita de bolo" para vocês adicionarem o servidor Ubuntu ao seu lab EVE e, na sequência, instalar o Docker e o Portainer (Front-end para o Docker).
Adicionando uma imagem Ubuntu ao EVE
O que vou mostrar aqui serve, na verdade, para qualquer imagem / sistema que você queira adicionar ao EVE. O processo é relativamente bem documentado no EVE CookBook, escrito pelo pessoal do EVE, mas aqui eu compartilho o passo-a-passo de como eu faço:A primeira coisa é preparar o EVE para receber a nova imagem. Acesse o EVE e vá para o diretório /opt/unetlab/addons/qemu/ – é nele que todas as imagens devem ser adicionadas. Abaixo você pode ver todos os diretórios que acompanham a instalação do EVE (e alguns que eu criei depois). Todos estarão vazios se sua instalação for nova. Você precisará buscar as imagens e adicioná-las ao diretório correspondente.
Repare que os diretórios seguem um padrão. Por exemplo, se eu quiser adicionar uma nova imagem Linux, eu tenho que criar um diretório chamado "linux-[qualquer nome que eu queira]". Isso devido ao templates que o EVE usa e como ele vai identificar novas imagens. Assim, se eu quiser adicionar uma imagem do Ubuntu 18.04, eu criaria o diretório linux-ubuntu-18.04 (assim eu sei o que tem lá dentro). Vamos fazer isso:
O próximo passo é obter a imagem. O EVE-NG utiliza KVM como hypervisor, portanto, as imagens que você carregar aqui precisam ser compatíveis. Além disso, o EVE possui em seus templates um default para buscar imagens .qcow2 (outros formatos podem não funcionar como esperado). Outro detalhe é que a imagem deve ser nomeada hda.qcow2. O QEMU possui ferramentas que permitem converter imagens em outros formatos para qcow2. É possível converter os seguintes formatos:
VMDK (usado em VMWare ESX)
VHD (usado em Microsoft Hyper-V)
VDI (usado em VirtualBox)
Eis um exemplo de comando usado para converter uma imagem gerada no ESX para o formato suportado pelo EVE:
qemu-img convert -f vmdk -O qcow2 image.vmdk hda.qcow2
OBS: Maiores informações sobre as opções disponíveis podem ser encontradas aqui.
Existe também a possibilidade de se criar uma imagem de disco vazia e bootar a máquina virtual usando uma imagem ISO de instalação, e instalar o sistema do zero na VM. Para isso, você deve baixar a ISO que deseja usar, colocá-la no diretório da nova VM que vai criar e renomea-la cdrom.iso. Fazendo isso, ao iniciar a VM no EVE, ela vai buscar a imagem do CD-ROM antes, e vai inicializar por ela, permitindo a instalação.
Para criar uma imagem qcow2 zerada, use o comando abaixo:
qemu-img create -f qcow2 hda.qcow2 30G
Obviamente, 30G no exemplo acima é o tamanho do disco virtual que será criado. Altere para se adequar às suas necessidades. O vídeo abaixo mostra esta abordagem:
A instalação do Docker em uma VM Ubuntu é bastante simples. Basta usar o comando abaixo:
Uma vez que o Docker finalize a instalação, você deve iniciar o processo e também adicionar a entrada em seu init.d para que ele inicialize automaticamente sempre que a VM for iniciada:
Instalação do Front-end (Portainer)
A instalação da interface gráfica para gerenciamento dos containers é feita usando o Docker (o sistema irá rodar em um container). Baixe a imagem do container usando o comando abaixo:
Inicialize o container usando o comando abaixo:
No exemplo acima, eu estou mapeando a porta TCP 9000 da minah VM Ubuntu para a porta TCP 9000 no container que vai rodar o sistema Portainer. Desta forma, para eu acessar o front-end eu preciso apontar meu navegador para o endereço IP da minha VM Ubuntu na porta 9000 (ex: se minha VM Ubuntu tem o IP 192.168.10.1, no meu navegador eu digitaria http://192.168.10.1:9000)
Para visualizar os containers que estão rodando em sua VM Ubuntu, você pode usar o comando abaixo:
Instalação dos containers NGINX (Web Server)
O último passo é a criação dos containers NGINX, mas antes disso, vamos criar na VM Ubuntu o diretório e o conteúdo que o container NGINX vai usar. Acesse a VM Ubuntu e crie um diretório que vai servir de repositório para o conteúdo web:
mkdir -p /data/www/c1
OBS: O caminho do diretório pode ser o que você quiser, não precisa ser exatamente igual ao meu exemplo.
Dentro do diretório criado, vamos criar uma página web simples:
cd /data/www/c1
Digite no editor:
<center><strong><font face="verdana" size="10" color="red">Container 1</font></strong></center>
E, depois, digite CTRL+X e "Y" para sair e salvar o arquivo.
Vamos agora criar o container NGINX. Para isso, vamos usar o Portainer. Acesse o Portainer no endereço IP e porta definidos anteriormente. No seu primeiro acesso, defina uma senha e depois clique na opção "Local". Uma vez dentro do ambiente, clique em "Images" e adicione a imagem do container NGINX, como abaixo:
OBS: Lembro que sua VM Ubuntu precisa ter acesso à Internet para que isso funcione.
Uma vez finalizado o download da imagem, clique em "Containers" e então na opção "Add Container":
Ainda na definição do container, role para o fim da página e selecione a opção "Volumes". Vamos fazer o mapeamento de pastas do container para a VM Ubuntu, para que o conteúdo que criamos anteriormente seja utilizado pelo nosso container NGINX:
Finalmente, clique em "Deploy the Container", e você verá seguinte tela:
Parabéns! Seu container NGINX foi criado e já está rodando, servindo o conteúdo criado anteriormente na pasta /data/www/c1! Você pode testar acessando o endereço IP de sua VM Ubuntu na porta 8081 (a porta que você mapeou anteriormente na sua VM Ubuntu para o seu novo container).
O gravação do Webinar mostra tudo isso (menos a criação da VM Ubuntu). Basta assistí-la, se tiver dúvidas!