Vou falar sobre a abordagem para organizar ambientes de desenvolvimento isolados locais na minha estação de trabalho. A abordagem foi desenvolvida sob a influência dos seguintes fatores:
- idiomas diferentes precisam de IDEs e cadeias de ferramentas diferentes;
- Projetos diferentes podem usar versões diferentes de cadeias de ferramentas e bibliotecas.
A abordagem é desenvolver contêineres no LXD em execução localmente em um laptop ou estação de trabalho, redirecionando a saída de gráficos para o host.
Configuração no exemplo do Ubuntu 20.04 .
Reflexões sobre opções e razões são apresentadas no final do artigo.
1. Instale o LXD
No Ubuntu 20.04, o LXD não está mais disponível para instalação como um pacote deb, apenas através do snap:
$ snap install lxd
Após a instalação, você precisa executar a inicialização:
$ lxd init
O único parâmetro que eu mudo é que storage bakend
eu uso dir
como o mais simples. Como não uso instantâneos e cópias, os avisos na documentação não me assustam:
Da mesma forma, o back-end do diretório deve ser considerado como uma opção de último recurso.
Ele suporta todos os principais recursos do LXD, mas é terrivelmente lento e ineficiente, pois não pode executar
cópias instantâneas ou instantâneos e, portanto, precisa copiar toda a totalidade do armazenamento da instância.
2. Configuração do perfil LXD
LXD — . default
:
$ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0
— X11 ;$ lxc profile set default environment.DISPLAY :0
— DISPLAY
;$ lxc profile set default raw.idmap "both 1000 1000"
— .
3.
images:ubuntu/20.04
:
$ lxc launch images:ubuntu/20.04 dev1
https://images.linuxcontainers.org, . images:
. Ubuntu : $ lxc launch ubuntu/20.04 dev1
.
:
$ lxc exec dev1 -- bash
Firefox VS Code ( ):
$ apt update
$ apt install curl gpg firefox
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list
$ apt update
$ apt install code
poweroff
! GPU , . :
$ lxc config device add dev1 mygpu gpu
;- — , .
4.
, , :
lxc start dev1
VS Code ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu code
Firefox:
lxc exec dev1 -- sudo --login --user ubuntu firefox
, — ssh.
, — .
5.
, , , . , , , . OpenSSL , .
:
- (KVM, VirtualBox ..) — , , Windows ( , Linux) ;
- (Cloud9 , Eclipse Che ..) — , , — ;
- Docker — , , .
. : , (Puppet, Ansible ..), Docker. LXD , — $ lxc launch images:ubuntu/16.04 dev16
.
, — , . .