Ngasingkeun lingkungan pangwangunan sareng wadah LXD

Kuring bakal ngobrol ngeunaan pendekatan pikeun ngatur lingkungan pangwangunan terasing lokal dina workstation kuring. Pendekatan ieu dikembangkeun dina pangaruh faktor di handap ieu:

  • Basa anu béda butuh IDE sareng ranté alat anu béda;
  • Proyék anu béda-béda tiasa nganggo vérsi anu béda tina ranté alat sareng perpustakaan.

Pendekatanna nyaéta ngembangkeun jero wadah LXD anu ngajalankeun lokal dina laptop atanapi workstation kalayan kaluaran grafik dialihkeun ka host.

Conto konfigurasi Ubuntu 20.04.

Reflections on pilihan jeung alesan dibere di ahir artikel.

1. Pamasangan LXD

В Ubuntu 20.04 LXD geus teu sadia pikeun instalasi salaku pakét deb, ngan ngaliwatan snap:

$ snap install lxd

Saatos instalasi anjeun kedah ngalakukeun inisialisasi:

$ lxd init

Hijina parameter I robah téh storage bakend - Kuring make dir salaku pangbasajanna. Kusabab kuring henteu nganggo gambar sareng salinan, peringatan di dokuméntasi Aranjeunna henteu nyingsieunan kuring:

Nya kitu, backend diréktori kedah dianggap salaku pilihan terakhir.
Éta ngadukung sadaya fitur LXD utama, tapi lambat pisan sareng henteu éfisién sabab henteu tiasa ngalaksanakeun
salinan instan atawa snapshots sarta jadi kudu nyalin sakabéh gudang instance unggal waktu.

2. Setélan profil LXD

Propil di LXD - ieu mangrupikeun set parameter anu dilarapkeun ka sababaraha wadah. Pikeun kaperluan kuring, hijina profil dijieun sacara standar cukup keur kuring default kalayan parobahan di handap ieu:

  • $ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0 - supados aplikasi dina peti tiasa berinteraksi sareng server host X11;
  • $ lxc profile set default environment.DISPLAY :0 - ku kituna variabel lingkungan DISPLAY dipasang leres dina wadahna;
  • $ lxc profile set default raw.idmap "both 1000 1000" - pikeun bener pemetaan identifier.

3. Nyiptakeun sareng nyetél wadah

Nyiptakeun wadah dumasar kana gambar images:ubuntu/20.04:

$ lxc launch images:ubuntu/20.04 dev1

Kuring resep gambar ti gudang https://images.linuxcontainers.org, saprak maranéhna boga software kirang tos dipasang. Kusabab ieu kuring nambihan awalan images: kana ngaran gambar. Nyiptakeun wadah dumasar kana gambar tina gudang Ubuntu tiasa dilakukeun sapertos kieu: $ lxc launch ubuntu/20.04 dev1.

Aksés ka cangkang akar wadahna:

$ lxc exec dev1 -- bash

Kuring bakal masang Firefox sareng VS Code (tina Repository nurutkeun parentah):

$ 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

Kuring gé kaasup wadah pikeun kajelasan.

poweroff

Bonus! Gampang ngalungkeun GPU kana wadah supados aplikasi anu dijalankeun tiasa nganggo kartu grafik. Jang ngalampahkeun ieu anjeun peryogi:

  • tambahkeun alat $ lxc config device add dev1 mygpu gpu;
  • install drivers kartu vidéo dina wadahna - sarua nu dipasang dina host teh.

4. Ngagunakeun wadah

Upami wadahna henteu acan jalan, anjeun kedah ngamimitian:

lxc start dev1

Ngajalankeun VS Code salaku pamaké non-root Ubuntu:

lxc exec dev1 -- sudo --login --user ubuntu code

Ngajalankeun Firefox:

lxc exec dev1 -- sudo --login --user ubuntu firefox

Jandéla aplikasi bakal ditingalikeun dina host, tapi bakal dieksekusi di jero wadahna - sami sareng neraskeun grafik nganggo ssh.

Kuring henteu sacara manual mareuman wadah anu ngajalankeun, sabab kuring henteu ningali seueur titik di jerona - kuring ngabatesan diri pikeun nutup windows aplikasi anu ngajalankeun.

5. Kacindekan

Abdi langkung resep henteu nganggo OS host pikeun pangwangunan, sabab ieu peryogi masang alat pangembangan, versi debug perpustakaan, ngonpigurasikeun komponén sistem dina cara anu khusus, sareng manipulasi anu sanés. Sadaya ieu tiasa nyababkeun paripolah anu teu kaduga dina parangkat lunak non-pangwangunan sanés, atanapi bahkan sadayana OS. Contona, parobahan dina konfigurasi OpenSSL bisa ngabalukarkeun OS eureun ngamimitian bener.

Kuring parantos nyobian alat anu béda pikeun ngasingkeun lingkungan pangwangunan:

  • mesin virtual (KVM, VirtualBox, jeung sajabana) mangrupa pilihan paling atra, tapi aranjeunna meakeun sumberdaya nyata leuwih, sanajan euweuh pilihan séjén pikeun ngembangkeun dina Windows (lamun host anu Linux Ubuntu);
  • parabot ngembangkeun awan ngajalankeun dina mesin lokal (Cloud9 dina wadahna atawa mesin virtual, Eclipse Che, jsb) - aranjeunna teu dikembangkeun pikeun mode ieu operasi, aranjeunna merlukeun konfigurasi tambahan sarta perawatan, éta pangalusna ngagunakeun eta pikeun tujuan maranéhanana. tujuan - dina awan;
  • Wadah Docker deui dimaksudkeun pikeun anu sanés; dina pamanggih kuring, aranjeunna henteu cocog pisan pikeun prototyping gancang nganggo parangkat lunak anu henteu acan dibungkus dina wadah anu misah.

Pendekatan anu dipilih impresses kuring ku kesederhanaan sarta low panghalang pikeun asupna. Dina wadahna sorangan, anjeun tiasa nganggo pendekatan khusus pikeun proyék: masang sareng ngonpigurasikeun sadayana sacara manual, atanapi nganggo automation (Wayang, Ansible, jsb.), bahkan nyebarkeun. Infrastruktur basis Docker. Kuring ogé nganggo wadah LXD pikeun ngajalankeun parangkat lunak khusus anu peryogi masang sajumlah ageung dependensi atanapi versi OS anu béda - dina hal ieu anjeun tiasa nyiptakeun wadah nganggo versi OS anu dipikahoyong, contona. $ lxc launch images:ubuntu/16.04 dev16.

Penting pikeun émut yén dina hal isolasi, containerization ngagaduhan permukaan serangan anu langkung ageung dibandingkeun virtualisasi - host sareng wadahna ngabagi inti tunggal, kerentanan anu tiasa ngijinkeun malware kabur tina wadahna. Nalika ékspérimén sareng parangkat lunak anu curiga, langkung saé ngagunakeun mékanisme isolasi anu langkung pas.

link mangpaat

sumber: www.habr.com

Tambahkeun komentar