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:
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):
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.