Desbravando Linux Containers (LXC) – o próprio

Linux Containers – iniciando

Como eu disse no comecinho da série, primeiro tive contato com o Docker para depois saber a respeito do LXC. Isso se deve ao fato de que, quase sempre a gente toma conhecimento das coisas mais simples e fáceis antes de conhecermos as mais ‘complicadas’, embora no caso do LXC isso não seja plenamente verdade. O LXC na verdade é bem mais simples que o docker e inclusive serve-lhe  de base (creio que mencionei isso no post anterior… se não o havia feito, agora foi :))

A verdade é que mesmo tendo surgido por volta de 2008 inserido ao kernel como uma forma de virtualização em nível de kernel, o LXC só começa a aparecer de leve em 2013.  Isso nos dá cerca de 5 (cinco) anos de desenvolvimento antes de ser disponibilizado como ‘production ready’.   Hoje o LXC encontra-se na versão 1.0, bastante estável e ainda em franco desenvolvimento.

 

Direto ao que interessa

Bom, vou prosseguir apresentando o modo de instalação do LXC, mas vou abordar apenas a instalação em ambiente Ubuntu®. No final do post, passo algumas dicas de links sobre instalação em outros gnu/linux flavors.

 

Instalando LXC

Fazer a instalação no LXC é simples. Apenas isso:

apt-get install lxc

Ao rodar o comando acima, o apt-get irá tratar de identificar as dependências necessárias e as instalar.

 

Feito isso, execute o comando lxc-checkconfig.

O retorno deverá ser algo como a imagem a seguir:

Imagem contendo a saída esperada do comando 'lxc-checkconfig', exibindo o status de configuração de cgroups, kernel namespaces e opções de virtualização de rede.
Saída esperada para o comando lxc-checkconfig

No Ubuntu® as configurações necessárias também serão definidas por padrão, no entanto, para maior segurança na utilização, podemos adicionar um setup básico para uso do lxc sem privilégios administrativos na máquina. Basta-nos seguir as instruções presentes no guia do lxc. Os passos são apresentados a seguir:

Para criar containers sem privilégios, alguns passos adicionais são necessários. Você precisará criar um arquivo de configuração padrão definindo seus mapeamentos de usuário e configuração de rede, assim como configurar o host para permitir que um usuario sem privilégios possa vincular-se à rede do host. O exemplo abaixo assumr que suas variações de usuário e grupo mapeadas sejam 100000-65536.

mkdir -p ~/.config/lxc
echo “lxc.id_map = u 0 100000 65536” > ~/.config/lxc/default.conf
echo “lxc.id_map = g 0 100000 65536” >> ~/.config/lxc/default.conf
echo “lxc.network.type = veth” >> ~/.config/lxc/default.conf
echo “lxc.network.link = lxcbr0” >> ~/.config/lxc/default.conf
echo “$USER veth lxcbr0 2” | sudo tee -a /etc/lxc/lxc-usernet

Para identificar seu id de usuario e grupo, execute o seguinte comando:

grep <seu username> /etc/sub* 2>/dev/null

Utilizando o LXC

Podemos acessar os comandos do lxc utilizando a interface em linha de comandos (CLI) ou partirmos para usar uma opção de interface gráfica como o lxc-webpanel. Por padrão o lxc oferece uma suite de comandos que cobrirá as suas funcionalidades. Todos os comandos são ‘montados’ seguindo a forma ‘lxc-<command>’.

Considerando que a necessidade de ser ‘produtivo’ seja uma regra e que o uso de interface gráfica tende a fazê-lo mais produtivo em alguns casos, então você irá optar por utilizar a interface gráfica com o LXCWebPanel. Perfeito… ou não. Optar por uma coisa ou outra pode significar, sim, que você ‘conhece’ mas não ‘domina’ a tecnologia por trás do lxc. Por outro lado, pode significar também que você é um preguiçoso :p .

Para efeitos de aprendizagem e domínio de funcionalidades, porém, saber utilizar a CLI é fundamental. Desculpe se parecer ofensivo, mas se você é um usuário de sistemas GNU/Linux e tem medo de usar a CLI, você deve superar esse ‘medo’ irracional. A interface de linha de comandos oferece maior controle sobre tudo o que você pretender fazer utilizando um SO *nix-based. Não vem ao caso, mas mesmo os Windows e Mac OSX oferecem poderosas CLI. Cabe a você superar o medo. Nunca esqueça:

Nesse post, vou abordar apenas a CLI e falar sobre a utilização do comando lxc-config que é voltado a executar ‘queries’ sobre os itens de configuração do lxc. Dedicarei um post exclusivo aos comandos de criação, clonagem, remoção/destruição e anexação de containers.

lxc-config

Podemos usar o lxc-config para consultar os valores ou apenas listar os itens de configuração. A sintaxe do comando:

lxc-config [-l | <nome do item>]

Ao executar o lxc-config apenas com a opção ‘l’ ele irá listar os itens de configuração do lxc:

Lista de opções de configuração do LXC
Lista de opções de configuração do LXC

Para checar o valor do item de configuração utilizamos, por exemplo, lxc-config lxc.lxcpath.

Saida do comando lxc-config lxc.lxcpath
Saida do comando lxc-config lxc.lxcpath

Sei que demorei bastante entre um post e outro mas a razão é que estava trabalhando uma ideia e procurando aprimoramento profissional, estudando…

No próximo post, nesse fim de semana, vou abordar de maneira breve os comandos relacionados a criação dos containers e comentar ainda algumas outras características so LXC. Por enquanto é só.

Valeu pela leitura e se tiver alguma pergunta, só falar.

Como prometido:

 

LXC no SUSE: https://www.suse.com/documentation/sles11/singlehtml/lxc_quickstart/lxc_quickstart.html

LXC no RH7: http://www.certdepot.net/rhel7-get-started-linux-containers/

No RH 6 se não estou enganado, não vira muito bem não, galera. Se quiserem tentar, ou tiverem feito e quiserem me dar uma dica, eu aceito, ó.

Agora, pra descontrair um pouco, o que acho legal é os caras procurando uma forma de usar ‘containers’ em ambientes Mac OS e Windows… Acabam gerando mais trabalho.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: