Linuxi konteinerite juhend: konteinerite tutvustus

Konteinerid on olnud moesõna juba aastaid... aga mis need täpselt on?

Konteinerid on teie arvutis virtualiseeritud rakenduste käitamise meetod, mis sarnaneb virtuaalmasinatega, kuid kasutab teistsugust aluseks olevate tehnoloogiate komplekti. Nende mõistmine võib olla keeruline, kuid need on hädavajalikud, et kõike juhtida Minecraft serverid Google'ile. Ja me näitame teile, kuidas neid seadistada.

Kasutame Linuxit, operatsioonisüsteemi, mis on loodud kaasaskantavusele, modulaarsusele ja stabiilsusele keskendunud. Linux on kõike alates serveritest kuni mikrolaineahjudeni ja lõpetades videomängukonsoolidega. Konteinerid ei piirdu ainult Linuxis töötamisega, vaid nende taga olevad tehnoloogiad sobivad kõige paremini Linuxiga ja töötavad selles kõige paremini. Kui olete Linuxi kasutaja uus, soovitame teil tutvuda meiega algaja juhend enne sukeldumist.

Kas konteinerid on virtuaalsed masinad?

Konteinerid võivad olla keerukad teemad, kuid kõige parem on alustada ühest võtmepunktist: konteiner on

mitte virtuaalne masin. Virtuaalne masin on konkreetse riistvara ja selle tarkvara simuleeritud versioon, mis töötab nn hüperviisoris. Kui olete kunagi kasutanud tarkvara nagu VirtualBox või multipass, siis olete kasutanud hüperviisorit.

Hüperviisor töötab tavaliselt kas oma operatsioonisüsteemina (tuntud kui 1. tüüpi hüperviisor) või mõne teise operatsioonisüsteemi, näiteks Windowsi või Ubuntu (2. tüüpi hüperviisor) piires. Hüperviisori ülesanne on esitada külalisoperatsioonisüsteemile simuleeritud riistvara, mida see tööks vajab. Täielik operatsioonisüsteem saab seejärel peal töötada. See hõlmab kõike alates simuleeritud CPU-st ja RAM-ist kuni andmesiinide, kettadraivide või võrguadapteriteni. See simulatsioon on arvutuslikult kallis, nii et virtuaalmasinatel on tavaliselt märkimisväärsed üldkulud.

Niisiis, mis on konteiner?

Konteiner sarnaneb virtuaalmasinaga selle poolest, et see sisaldab ja käitab tarkvara hostsüsteemi isoleeritud keskkonnas. Kuid konteinerid asendavad traditsioonilise riistvara virtualiseerimise, tuginedes otse hosti operatsioonisüsteemile. Konteinerid jagavad hostoperatsioonisüsteemi teeke ja binaarfaile ning neil on ainult need ressursid ja sõltuvused, mis on vajalikud neis sisalduva konkreetse rakenduse käitamiseks. See tähendab, et ühe konteineri kohta pole vaja täielikku operatsioonisüsteemi, kuna kõik konteinerid töötavad a süsteem saab jagada ühte hosti operatsioonisüsteemi, säilitades samas virtuaalse eraldatuse masinad.

Konteinerid pääsevad hosti operatsioonisüsteemile juurde acontainer engine kaudu, mis haldab töötavaid konteinereid ja kontrollib nende juurdepääsu aluseks olevale operatsioonisüsteemile. See võib hõlmata turvalisuse tagamist konteinerite vahel ning juurdepääsu lubamist või keelamist operatsioonisüsteemi failidele või võrguühendustele.

Millised on mõned kompromissid konteinerite kasutamisel?

Kuigi virtuaalmasinad ja konteinerid on sarnased, on konteinerite kasutamisel omad puudused. Ühe jaoks peetakse virtuaalseid masinaid turvalisemaks, kuna virtuaalmasinast "põgenemiseks" mõeldud ründepind on oluliselt väiksem ja raskemini läbitav. Konteiner ei pruugi sobida näiteks pahavara testimiseks.

Konteinerite kasutamise peamine eelis on nende kerge kaal. Kogu operatsioonisüsteemi virtualiseerimise vajaduse vältimine tähendab minimaalset käivitusaega ja väiksemat süsteemi kulu. See tähendab, et ühes hostis saab töötada palju rohkem konteinereid, mis poleks virtuaalsete masinate puhul võimalik.

Kuna konteinerid ei nõua täielikku operatsioonisüsteemi, saab neid hõlpsasti väiksemateks kujutisteks pakkida ja levitada. Kui virtuaalse masina täiskujutis võib kergesti olla kümneid gigabaiteid, võivad konteinerid olla kuni 15 kb suuruste piltidena. See muudab konteinerite levitamise ja kasutamise äärmiselt lihtsaks. Näitame seda, käivitades Dockeris mõned lihtsad näidiskonteinerid.

Dockeri installimine

See on palju teooriat, nii et olgem praktilised. Et näidata teile, kuidas konteinerit seadistada, installime Dockeri versiooni Ubuntu 23.10 ja kasutame seda lihtsa Hello World konteineri käitamiseks. Meie samme testitakse virtuaalmasinas, kuid võite ka Windowsi arvutist topeltkäivitada või kasutada a suurepärane sülearvuti Linuxi jaoks.

Dockerist on kiiresti saanud de facto konteineriseerimistööriist. Kuigi muud tööriistad on olemas, on Docker laialdaselt kasutusele võetud ja sobib suurepäraselt kõigi rakenduste jaoks, välja arvatud kõige nõudlikumad. Seal on dokumentatsioon Dockeri installimise erinevate viiside kohta, kuid me kasutame mugavusinstalli skripti. See käsk laadib skripti saidilt get.docker.com teie kohalikku masinasse alla:

$ curl -fsSL https://get.docker.com -o get-docker.sh

Seejärel saate Dockeri installimiseks selle skripti käivitada. Saate kontrollida, kas Docker on õigesti installitud, kontrollides versiooni:

$ sudo sh ./get-docker.sh

Sellele järgneb versioonikontroll:

$ sudo docker version

Samuti saate kontrollida, kas dokkimisteenus töötab taustal, kasutades järgmist:

$ sudo systemctl status docker

See peaks tähistama rohelise tekstiga „aktiivne (töötab)”, nagu on esile tõstetud alloleval ekraanipildil. Dockeri mootori versioon tuleks samuti vigadeta printida.

Lihtsa näite esitamine

Nüüd, kui Docker on installitud, saate seda kasutada konteineri kujutise allalaadimiseks. Konteinerite kujutised sarnanevad paljuski virtuaalmasinate ISO-dega, välja arvatud see, et need on tavaliselt väiksemad ja neid on lihtsam ehitada. Laadige alla lihtne hello-worldi konteineri pilt järgmise käsuga:

$ sudo docker pull hello-world

Kui see pilt on alla laaditud, saate seda kontrollida, loetledes oma süsteemi allalaaditud pildid, kasutades järgmist.

$ sudo docker images

Nüüd peaksite nägema tere-maailma allalaadimist. Pange tähele väga väikest suurust (meie testmasinas 13 Kb) ja selle silti. Pildi silt on tegelikult selle versioon. Vaikimisi laadib Docker alla pildi uusima versiooni. Käivitage selle pildi põhjal konteiner, kasutades:

$ sudo docker run hello-world: latest

See väljastab Dockersi hello-world spieli, mis töötab väga väikesest C-programmist (mida saate vaadata GitHub).

Palju õnne; olete käivitanud oma esimese konteineri! Sel juhul on programm oma tulemuse väljastanud ja täitmise lõpetanud. Konteiner on nüüd surnud ega tööta enam.

Kuidas konteinereid elus hoida

Pärast põhikonteineri käitamist saame nüüd luua keerukama näite, mis ei välju kohe pärast ülesande täitmist. Konteinerid on sageli üles ehitatud ühe protsessi ümber, mis võib kaasa tuua rohkem protsesse. Kui see põhiprotsess väljub, väljub kogu konteiner koos sellega. See võib tunduda piiranguna, kuid tegelikult on see väga sarnane sellega, kuidas süsteemid käivitatakse Linuxi täiskerneli funktsioonis.

Püsiva näite käivitamiseks saame tõmmata pildi Nginxi jaoks, mis on veebiserver, mida kasutatakse olulise osa maailma veebisaitide majutamiseks. Valisime selle näite jaoks Nginxi, kuna see on lihtne, ei vaja täpsemat konfiguratsiooni ja on kerge. Laadige alla uusim Nginxi pilt järgmise käsuga:

$ sudo docker pull nginx

Oleme lisanud -lk märkige siin, et konfigureerida pordi edastamine konteinerist hosti operatsioonisüsteemi. Porti 80 kasutatakse krüptimata HTTP (st veebi) liikluse jaoks. See võimaldab teil oma hostmasinast konteinerile juurde pääseda:

$ sudo docker run -p 80:80 nginx

See käsk töötab teie terminalis ühendatud režiimis, mis tähendab, et konteiner on sõna otseses mõttes teie terminaliga ühendatud, nii et kõik konteineri logid prinditakse sinna. Kui konteiner on käivitunud, avage see http://localhost oma veebibrauseris. Näete allolevale sarnast Nginxi tervituskuva:

Nginxi konteiner töötab nüüd teie konteineri mootoris. Kuigi Nginx töötab lisatud režiimis, jätkab see töötamist ainult seni, kuni see on avatud. Nginxi konteinerist saate väljuda vajutades Ctrl + C oma terminalis.

Kuidas taustal konteinereid käivitada

Nginxi taustal käitamiseks lisame teise lipu, -d, eraldatud režiimi jaoks. See käivitab konteineri, mis on teie terminalist eraldatud, mis tähendab, et see on taustal. Näiteks:

$ sudo docker run -d -p 80:80 nginx

Saate loetleda süsteemis töötavad konteinerid. Pange tähele, kuidas teie Nginxi konteiner töötab nüüd taustal ja sellele on määratud ID.

$ sudo docker ps

Töötava taustakonteineri saab selle ID abil tappa. Samuti võite märgata, et konteinerile on antud nimi. Kui seda pole määratud, annab Docker igale konteinerile juhusliku kordumatu nime.

$ sudo docker kill 

Kuid võite seda katsetada mõne huvitavama pildiga. Seal on palju saadaval Dockeri jaotur, mis toimib avalike konteineripiltide keskse hoidlana.

Sügavamale sukeldumine konteineritega

See on olnud konteinerite lühitutvustus. Konteinerid võivad olla piiramatult keerulised, kuid need on meie kaasaegse Interneti-ühenduse kõrge hajutusega süsteemide alustalaks. See jõud ei võta siiski ära nende kasutamist väiksemas mahus. Konteinerite ja Dockeri põhitõdede tundmine võib olla värav kasulike kohalike teenuste, näiteks Minecrafti server või Plex vanal arvutil.