Konteiner on viis, kuidas programm ühest keskkonnast teise teisaldamisel iseseisvalt tööle panna. Konteinerimine seevastu on konteinerite pakendamise protsess, et hõlbustada nende skaleerimist ja suurendada nende kaasaskantavust. Dockeri konteiner võimaldab teil oma keskkonnas rakendusi kiiresti arendada ja käivitada. Lisateavet Dockeri kohta saate siit.

Eeldused

Alustamiseks peame oma süsteemi installima Dockeri. Vaadake seda hämmastavat artiklit Dockeri kasutamise alustamise kohta. Kui te ei kasuta Ubuntut, vaadake kindlasti üle ametlik dokumentatsioon Dockeri installimise kohta oma operatsioonisüsteemi keskkonda.

Pange tähele, et me kasutame Ubuntu 20.04selles õpetuses.

Iseseisva helitugevuse loomine

Dockeri köited on süsteemifailid, mis on lisatud konteineritele ja aitavad andmeid säilitada. Dockeri mahud on olulised ka siis, kui soovite jagada andmeid erinevate konteinerite vahel. Alustame. Kasutame docker volume createkäsku köite loomiseks ilma seda ühegi konteineriga seostamata. Loome köite nimega NewVol1:

docker volume create NewVol1 

Kui loetleme oma väljundi, näeme loodud helitugevust:

docker volume ls DRIVER VOLUME NAME local NewVol1 

Järgmisena peame seadistama uue konteineri Ubuntu image. Kasutame --rmlippu konteineri kustutamiseks, kui kasutaja väljub. Lipp -vkinnitab uue helitugevuse. Köite nimi tuleb määrata, millele järgneb koolon ja absoluutne tee, nagu allpool näidatud:

docker run -ti --rm -v NewVol1:/newvol1 ubuntu 

Allolev koodilõik näitab, kuidas kirjutada andmeid konteinerisse Dockeri köitele.

[email protected]:/# echo "Example1" > /newvol1/Example1.txt 

Väljume juurtest, kasutades allolevat koodilõiku:

[email protected]:/# exit 

Kontrollimaks, kas meie maht on endiselt meie keskkonnas, kasutame docker volume inspectjärgmist:

docker volume inspect NewVol1 

Väljund on:

[ { "CreatedAt": "2021-05-12T20:20:24+03:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/NewVol1/_data", "Name": "NewVol1", "Options": {}, "Scope": "local" } ] 

Väljund on JSON-massiivi vormingus. See näitab timestampülevaatuse tulemust. Mõlemad Driveron Scopemeie kohalikus süsteemis. Kuid Labelsja Optionson tühjad, kuna me neid ei täpsustanud. MountpointNäitab teed, millel köide asub. Atribuut namenäitab köidet, mida me kontrollime. Järgmisena käivitame uue konteineri ja lisame NewVol1:

docker run -ti --rm -v NewVol1:/newvol1 ubuntu 

Saate sisu kontrollida, nagu allpool näidatud:

docker run -ti --rm -v NewVol1:/newvol1 ubuntu [email protected]:/# cat /newvol1/Example1.txt Example1 [email protected]:/# exit exit 

Köite loomine olemasolevast andmetega kataloogist

Selles etapis loome andmetega konteineris köite. Seadistage tee /varääres konteiner ja lisame Dockeri helitugevuse:

docker run -ti --rm -v NewVol2:/var ubuntu [email protected]:/# exit exit 

Pange tähele, et /varkataloogi sisu dubleeritakse Dockeri köites. Samuti lisame helitugevuse uusimale konteinerile ja väljume praegusest kataloogist.

Kasutame kesta käivitamise vaikekäskluse lsasemel käsku :bash

docker run --rm -v NewVol2:/newvol2 ubuntu ls newvol2 backups cache lib local lock log mail opt run spool tmp 

Indeks newvol2dubleerib /varkataloogis olevaid komponente. Selle meetodi kasutamine manustamiseks /var/aitab pilti renderdada.

Andmete jagamine mitme Dockeri konteineri vahel

Enamasti soovime, et sarnasele Dockeri mahule paigaldataks erinevad konteinerid. Kuid Docker ei tegele failide lukustamisega. Erinevate konteinerite mahule kirjutamiseks peaks konteinerite praegune keskkond olema seade, mis toetab jagatud andmesalve.

Container3 ja DataVolume3 loomine

Me kasutame docker runuue konteineri seadistamiseks, mida nimetatakse Container3järgmiselt:

docker run -ti --name=Container3 -v NewVol3:/newvol3 ubuntu 

Seejärel lisame uude faili teksti, nagu allpool näidatud:

[email protected]:/# echo "Shared container file" > /newvol3/Example3.txt [email protected]:/# exit exit 

Seejärel väljume konteinerist ja navigeerime hostiterminali, kus loome uue konteineri, mis ühendab andmemahu Container3.

Looge Container4 ja lisage mahud Container3-st

Kinnitame Container3vastloodud, Container4nagu allpool näidatud:

docker run -ti --name=Container4 --volumes-from Container3 ubuntu 

Andmete järjepidevust kontrollitakse järgmiselt:

[email protected]:/# cat /newvol3/Example3.txt Shared container file [email protected]:/# 

Siinkohal lisame mõned tekstid Container4ja väljume konteinerist:

[email protected]:/# echo "Both containers can write to NewVol3" >> /newvol3/Example3.txt [email protected]:/# exit exit 

Seejärel kontrollime, kas meie andmed on endiselt keeles Container3.

Konteiner4 muudatused

Saame kontrollida Dockeri helitugevuse muudatusi värskendades Container3:

docker start -ai Container3 

Allolevad käsud kinnitavad, kas kõik konteinerid said Dockeri köitest lugeda ja kirjutada ning seejärel keskkonnast väljuda:

[email protected]:/# cat /newvol3/Example3.txt Shared container file Both containers can write to NewVol3 [email protected]:/# exit exit 

Käivitage Container5 ja lisage kirjutuskaitstud köide

Kui konteiner on ühendatud andmemahuga, ei eemalda me seda tavalise Linuxi failina. Seadistame uue konteineri ja muudame köite kirjutuskaitstuks. Lipu lisamine :rokonteineri nime lõppu muudab selle read-only, nagu allpool näidatud:

docker run -ti --name=Container5 --volumes-from Container3:ro ubuntu 

Testime kirjutuskaitstud silmapaistvust, proovides meie loodud faili välja jätta:

[email protected]:/# rm /newvol3/Example3.txt rm: cannot remove '/newvol3/Example3.txt': Read-only file system [email protected]:/# exit exit 

Allolev käsk tühjendab meie testkonteinerid ja -mahud:

docker rm Container3 Container4 Container5 docker volume rm NewVol3 

Järeldus

Selles õpetuses oleme õppinud, kuidas luua sõltumatu Dockeri köide, mis säilitab konteineri kustutamisel andmeid. See hõlbustab ka andmete jagamist erinevate konteinerite vahel. Failide lukustusmehhanism vähendab andmete rikkumist. Lõpuks õppisime ka jagatud köite ühendamist ja selle kirjutuskaitstuks muutmist.

Muud ressursid

  • Docker

Vastastikuse eksperdihinnangu kaastööd autor: Wanja Mike Üks põhjus, miks Docker on suurepärane, on see, et see suudab rakendusi konteinerisse paigutada ilma teie kohalikku arvutisse täiendavaid sõltuvusi installimata. Sellegipoolest töötab Docker virtualiseerimisarhitektuuril. See loob isoleeritud keskkonna teie rakenduse käivitamiseks hostmasinast eemal. Dockeri mootor määrab ressursside määramise hostist virtualiseeritud isoleeritud rakendusele. Kui selline rakendus on konteinerisse paigutatud, eraldatakse rakenduse virtualiseeritud andmed hostist. See tähendab, et rakenduse virtualiseerimisel hostitakse kõiki selle andmeid dockerize konteinerites. Sel juhul töötavad host ja rakendus erinevates infrastruktuurides. Mõnikord võite soovida, et teie virtuaalselt konteinerisse paigutatud rakendus jagaks andmeid ja faile otse hostarvutist. Vaikimisi salvestatakse kõik konteineris loodud failid kirjutatavale konteinerikihile. Kui konteiner enam ei tööta, andmed ei säili. Konteineri kirjutatav kiht on tihedalt ühendatud hostarvutiga, milles konteiner töötab. Seetõttu ei saa andmeid hõlpsasti teise asukohta üle kanda. Docker pakub konteineritele failide salvestamiseks hostisüsteemi kahel viisil, et failid oleksid püsivad ka pärast konteineri sulgemist. Need on Dockeri köited ja sidumiskinnitused. See ajaveeb õpetab teile, kuidas jagada andmeid Dockeri konteinerrakenduse ja hostarvuti vahel.

Sisukord

  • Eeldused
  • Dockeri seadistamine
  • Sidekinnituste kasutamine
    • 1. samm: koostame kataloogi, kuhu konteineriga paigaldame
    • 2. samm: koostage ja käivitage konteiner, kasutades Nginxi pilti
    • 3. samm: hankige oma IP-aadress
    • 4. samm: testimine
  • Mahukinnituse kasutamine
    • 1. samm: looge helitugevus
    • 2. samm: konteineri kaardistamine
    • 3. samm: hankige oma hostarvuti IP-aadress
    • 4. samm: testimine
  • Järeldus

Eeldused

See juhend käsitleb Dockerit. Eelteadmised Dockeri kasutamisest rakenduste käitamiseks on olulised. See artikkel Dockeriga alustamise kohta aitab teil Dockeri kohta rohkem teada saada.

Dockeri seadistamine

  • Esiteks veenduge, et olete Dockeri oma arvutisse alla laadinud ja installinud. Kontrollige seda, käivitades:
  • Järgmisena peate tõmbama Nginxi pildi. Minge oma terminali ja tõmmake Nginxi pilt Dockeri jaoturist, kasutades allolevat käsku:

Saate kontrollida, kas pilt laaditi alla käsuga docker image ls, ja pildid kuvatakse teie terminalis. nginx-docker-image See näitab, et uusima sildiga Nginx on Dockeri jaoturist edukalt alla laaditud. Seetõttu saame seda kasutada Dockeri konteineri loomiseks, mida kasutatakse selle pildi täitmiseks.

Sidekinnituste kasutamine

Vaikimisi käitab Docker rakendusi olekuta. See saadab kirjutatava kihi, et võimaldada rakendusele kirjutamisjuurdepääsu, kuid kõik, mida sinna kirjutate, kustutatakse kohe pärast konteineri peatamist. See tähendab, et juurdepääs kirjutatavale kihile ei ole alati usaldusväärne. Seetõttu kasutab Docker rakenduse failisüsteemi ajutiseks haldamiseks erinevaid meetodeid, nagu sidumisühendus, köited ja mälusisesed suvandid. Bind mount toimib, paljastades konteineris hostarvutisüsteemis oleva faili või kataloogi. See on võimas tehnika hostmasinas olevatele failidele juurdepääsuks konteinerist. Kuna andmeid hoitakse hostis, ei lähe need konteineri sulgemisel kaotsi. Kuna need andmed salvestatakse hostarvutisse, peate teadma õiget asukohta hostis, mille soovite konteinerisse ühendada. See tuleb teie arengule kasuks, sest uuele lähtekoodile juurdepääsuks ei pea te pilti uuesti üles ehitama. Teete oma allikas muudatusi ja muudatused kajastuvad kohe ühendatud konteineris. Sidumiskinnituse kasutamiseks järgime järgmisi samme.

1. samm: koostame kataloogi, kuhu konteineriga paigaldame

Kataloogi loomiseks käivitage allolev käsk:

2. samm: koostage ja käivitage konteiner, kasutades Nginxi pilti

Kasutades tõmmatud Nginxi pilti, loome Dockeri konteineri, mis:

  • Käivitage konteiner taustal, kasutades -t -d.
  • Määra pordi kaardistamiseks, kasutades -P.
  • Määrake paigaldamiseks helitugevus, -vmille abil oleme eelmises etapis loodud helitugevus, Nginxi failide asukohta.
  • Määrake konteineri nimi, kasutades --name.
  • Määrake Nginxi pilt, kasutades nginx:latest.
docker run -t -d -P -v /tmp/nginx/html:/usr/share/nginx/html --name nginxcont nginx:latest 

Pärast ülaltoodud käsu käivitamist kontrollige töötavaid konteinereid käsuga: bind-mount-konteinerid

3. samm: hankige oma IP-aadress

IP-aadressi saamiseks tippige allolev käsk: Pordinumbri saate eelmises protsessis loodud konteinerist, kontrollides veeru all PORTSvõi käivitades lihtsalt käsu run docker container ls. See määrab kasutatavale konteinerile määratud pordi numbri. Liikuge oma brauserisse ja sisestage vahekaardile järgmine URL: http://<your_ip_address>:<your_port>. Kuna meil ei ole kataloogis ühtegi HTML-faili, peaks teie sisu olema sarnane: bind-mount-default

4. samm: testimine

Looge oma praeguses kataloogis index.htmlfail ja lisage järgmised koodiread:

<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h2>Welcome to nginx! Edited</h2> <p> If you see this page, the Nginx web server is successfully installed and working. Further configuration is required. </p> <p> For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br /> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>. </p> <p><em>This file is edited</em></p> </body> </html> 

Kopeerime selle faili hostarvutist varem loodud Dockeri konteineri paigalduskausta. Faili kopeerimiseks kasutage seda käsku:

cp index.html /tmp/nginx/html 

Pärast ülaltoodud käsu käivitamist värskendage brauseri vahekaarti ja näete uut sisu. Nüüd värskendame faili. Kõigepealt minge alloleva käsu abil kataloogi, kus see fail asub: Nüüd, kasutades koodiredaktorit, muutke faili ja salvestage see. Kui värskendate brauseri vahekaarti, peaksite saama tehtud muudatusi visualiseerida. Nüüd olete uurinud, kuidas jagada faile hostarvutist Dockeri konteinerisse, kasutades sidumisühendust.

Mahukinnituse kasutamine

Helitugevuse ühendamise kasutamiseks andmete jagamiseks hosti ja konteineri vahel toimige järgmiselt.

1. samm: looge helitugevus

Alustage helitugevuse loomisega, kasutades seda käsku:

docker volume create simplevol 

helitugevuse loomise kinnitamiseks käivitage käsk: mahud

2. samm: konteineri kaardistamine

Käivitage Dockeri konteiner, mis kaardistab ülal loodud köite. Kasutame järgmisi juhiseid:

  • Käivitage konteiner taustal klahviga -t -d.
  • Määrake pordi kaardistamine nupuga -P.
  • Määrake konteineri nimi nupuga --name.
  • Seadistage helitugevus nupuga -v. Helitugevusega seame selle asukohta, kus Nginxi failid on salvestatud, et saaksime neid redigeerida ja tegevuses näha.
  • nginx:latestKasutage konteineri loomiseks Nginxi pilti koos .

Nüüd käivitage see käsk ülaltoodud parameetrite käivitamiseks:

docker run -t -d -P --name nginxcont1 -v simplevol:/usr/share/nginx/html nginx:latest 

Konteiner on seatud ja peaks töötama. Konteineri oleku kontrollimiseks käivitage käsk: konteinerid

3. samm: hankige oma hostarvuti IP-aadress

Hankige oma hostarvuti IP-aadress, käivitades käsu ifconfig: Teie IP-aadress on inetparameetris. Meie puhul on see 172.19.0.1. Selle leiate oma vastusest järgmiselt: IP-aadress

  • PORTSHankige veerus konteineri oleku kontrollimise eelmises etapis pordi number, kuhu konteiner on kaardistatud .
  • IP-aadressi ja pordi numbriga saate nüüd minna oma brauserisse, avada vahekaardi ja sisestada järgmised andmed: http://<your_ip_address>:<your_port>.

Teie leht peaks sarnanema järgmisele: vaikimisi-nginx-leht

4. samm: testimine

Esmalt kopeerige Nginx index.htmlkonteinerist oma hostarvutisse. Selleks tippige järgmine käsk:

docker cp nginxcont1:/usr/share/nginx/html/index.html index.html 

Avage fail oma koodiredaktoriga, värskendage seda järgmiselt ja salvestage:

<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h2>Welcome to nginx! Edited</h2> <p> If you see this page, the Nginx web server is successfully installed and working. Further configuration is required. </p> <p> For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br /> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>. </p> <p><em>This file is edited</em></p> </body> </html> 

Lükake muudetud fail arvutist Dockeri konteinerisse, käivitades käsu:

docker cp index.html nginxcont1:/usr/share/nginx/html 

Kui värskendate varem avatud vahekaarti, oleks sisu pidanud lisatud muudatuste kajastamiseks värskendama. uuendatud-nginx-leht Siiani olete saanud käitada mahutit, kopeerida faile hostarvutist Dockeri konteinerisse ja vastupidi. Helitugevuse paigaldamisega jäävad failid värskendatuks isegi siis, kui kustutame praeguse konteineri. Selle kontrollimiseks teeme järgmist.

  • Esmalt peatage praegune konteiner:
  • Seejärel käivitage samale mahule erineva konteineri paigaldamine, kasutades käsku:
docker run -t -d -P --name nginxcont2 -v simplevol:/usr/share/nginx/html nginx:latest 
  • Oma IP-aadressi ja vastloodud konteineri pordiga pääsete sellele brauserist juurde. Näete, et sisu on värskendatud. Seda seetõttu, et oleme selle helitugevusele paigaldanud.

Nüüd olete õppinud helitugevuse paigaldamise ja selle andmete püsivuse kohta. Vahemärkusena võib öelda, et helitugevusi kasutatakse ka siis, kui käitate dokkimisrakendust, kasutades docker-compose’i. Dockeri koostamise faili kirjutamisel saate määrata köiteid ja rakenduste konteineri koostamisel luuakse köideteed automaatselt. Siin on näide failist docker-compose.yml, mida saab kasutada Mongo andmebaasi dokkimiseks:

version: '3.8' services: mongo: image: mongo:4.2.8 ports: - 27017:27017 volumes: - mongodb:/data/db 

Ülaltoodud näites töötab andmebaasi konteiner hostis. Konteineril on virtuaalne failisüsteem, kus andmeid tavaliselt säilitatakse ilma püsivuseta. Kui peaksime konteineri peatama ja taaskäivitama, kaovad selle virtuaalse failisüsteemi andmed ja see algab uuest olekust. Kuid kuna oleme volumessellesse dokkeri koostamise faili lisanud, salvestatakse muudatused, mida rakendus andmebaasis teeb. Hostifailisüsteemi kataloog ühendatakse Dockeri virtuaalse failisüsteemi kausta. Kui konteiner avaldab oma failisüsteemis, dubleeritakse see koheselt ja kirjutatakse hosti failisüsteemi kataloogi ja vastupidi. Kui konteiner taaskäivitab oma virtuaalse failisüsteemi, hangib see andmed hostilt automaatselt, kuna andmed on alles iga kord, kui konteineri taaskäivitatakse.

Järeldus

Oleme käsitlenud, kuidas saate oma Dockeri konteinerite ja hostarvuti vahel andmeid jagada. Protsessid on lihtsalt rakendatavad. Kui kasutate Dockeri köiteid, saate kasutada sama lähenemisviisi ja kasutada andmemahtusid andmete jagamiseks erinevate Dockeri keskkonnas töötavate konteinerite vahel. Vaadake seda ajaveebi, et saada teavet selle kohta, kuidas andmeid Dockeri konteinerite vahel jagada. Vastastikuse eksperdihinnangu kaastööd autor: Willies Ogola Dockeri konteinerid on tahtlikult isoleeritud keskkonnad. Igal konteineril on oma failisüsteem, millele teised konteinerid ega teie host ei pääse otse juurde. Mõnikord võivad konteinerid vajada andmeid jagama. Kuigi peaksite püüdma konteinerite isemajandust, on stsenaariume, kus andmete jagamine on vältimatu. See võib juhtuda nii, et teine ​​konteiner pääseb juurde kombineeritud vahemällu, kasutab failiga tagatud andmebaasi, loob varukoopiat või teeb kasutaja loodud andmetega toiminguid, näiteks pildi optimeerija konteiner, mis töötleb eraldi veebiserveri konteineri kaudu üles laaditud profiilifotosid. . Selles juhendis vaatleme mõnda meetodit andmete edastamiseks teie Dockeri konteinerite vahel. Eeldame, et olete Dockeri juba seadistanud ja tunnete põhimõisteid, nagu konteinerid, pildid, köited ja võrgud. Mahud on de facto andmete jagamise seadistamise viis. Need on sõltumatud failisüsteemid, mis salvestavad oma andmeid väljaspool mis tahes konteinerit. Köite ühendamine konteineris olevale failisüsteemi teele annab lugemis- ja kirjutamisjuurdepääsu köite andmetele. Köiteid saab korraga kinnitada mitmele konteinerile. See hõlbustab Dockeri hallatavat andmete sujuvat jagamist ja püsivust. Alustuseks looge helitugevus:

dokkimismaht luua --name jagatud-andmed

Järgmisena looge konteinerid, ühendades helitugevuse iga pildi eeldatava failisüsteemi teega:

dokkeri käivitamine -d -v jagatud-andmed:/andmed --nimi näide näide-pilt: uusim docker run -d -v shared-data:/backup-source --name backup backup-image: uusim

Selles näites saab backupkonteiner tõhusa juurdepääsu examplekonteineri /datakataloogile. See paigaldatakse kujul /backup-source; kummagi konteineri tehtud muudatused kajastuvad teises.

Sobiva mahuga konteinerite kiire käivitamine

Ülaltoodud näidet saab docker runkäsu --volumes-fromlipu abil lihtsustada. See annab mehhanismi olemasoleva konteineri poolt juba kasutatavate köidete automaatseks ühendamiseks:

docker run -d --volumes-from example --name backup backup-image:latest

Seekord saab backupkonteiner oma kataloogi shared-dataühendatud köite . /dataLipp tõmbab sisse kõik mahutile --volumes-fromlisatud mahumääratlused . exampleSee sobib eriti hästi varutöödeks ja muudeks lühiajalisteks konteineriteks, mis toimivad teie põhiteenuse abikomponentidena.

Ohutuse parandamine kirjutuskaitstud kinnitustega

Köited paigaldatakse vaikimisi alati lugemis-kirjutamisrežiimis. Kõigil teie mahutitel, millel on juurdepääs helitugevusele, on lubatud selle sisu muuta, mis võib põhjustada soovimatut andmekadu. Parim tava on ühendada jagatud köited kirjutuskaitstud režiimis, kui konteinerit ei eeldata muudatuste tegemist. Ülaltoodud näites peab backupkonteiner lugema ainult shared-dataköite sisu. Kinnituse seadmine kirjutuskaitstud režiimile rakendab seda ootust, vältides vead või pahatahtlikud binaarfailid pildil examplekonteineri kasutatavaid andmeid kustutamast.

docker run -d -v shared-data:/backup-source:ro --name backup backup-image: uusim

roKolmanda kooloniga eraldatud parameetrina lipule lisamine -vnäitab, et helitugevus tuleks paigaldada kirjutuskaitstud režiimis. Selgesõnalisema alternatiivina võite ka kirjutada readonly.ro

Andmete jagamine võrgu kaudu

Võrguvahetusi saate kasutada alternatiivse lähenemisviisina andmete jagamiseks failisüsteemi mahtude kaudu. Kahe konteineri ühendamine samasse Dockeri võrku võimaldab neil sujuvalt suhelda automaatselt määratud hostinimede abil:

dokkimisvõrk loo demovõrk docker run -d --net demo-network --name first example-image: uusim docker run -d --net demo-network --name teine ​​teine-image:latest

Siin firstsaab pingida secondja vastupidi. Teie konteinerid võivad käitada HTTP API teenust, mis võimaldab neil üksteise andmetega suhelda. Varundamise näidet jätkates võib teie backupkonteiner nüüd teha http://example:8080/backup-datavõrgutaotluse varundamiseks andmete hankimiseks. exampleKonteiner peaks vastama arhiiviga, mis sisaldab kõiki salvestatavaid andmeid . Seejärel vastutab varukonteiner arhiivi sobivasse salvestuskohta säilitamise eest. Võrgu kaudu andmete jagamise jõustamine aitab sageli lahtisidumist. Lõppkokkuvõttes saate selgelt määratletud liidestega, mis ei loo teenuste vahel tugevaid sõltuvusi. Juurdepääsu andmetele saab täpsemalt juhtida, avalikustades iga andmetüübi API-d, selle asemel, et anda igale konteinerile täielik juurdepääs mahule. Selle lähenemisviisi kasutamisel on oluline kaaluda turvalisust. Veenduge, et teie teiste Dockeri konteinerite sisemiseks juurdepääsuks mõeldud HTTP API-liidestel ei oleks teie Dockeri hosti sildvõrgus avatud porte. See on vaikekäitumine ülaltoodud võrguvalikute kasutamisel; pordi sidumine -p 8080:8080võimaldaks juurdepääsu varu-API-le teie hosti võrguliideste kaudu. See oleks turvaprobleem.

Kokkuvõte

Dockeri konteinerid on isoleeritud keskkonnad, millel pole juurdepääsu üksteise failisüsteemidele. Sellegipoolest saate andmeid jagada, luues köite, mis on ühendatud kõikidesse osalevatesse konteineritesse. Jagatud Dockeri võrgu kasutamine on alternatiivne valik, mis tagab tugevama eraldatuse stsenaariumides, kus failisüsteemi otsene interaktsioon pole vajalik. Hea tava on piirata konteineritevahelist suhtlust nii palju kui võimalik. Juhtumid, kus vajate andmete jagamist, tuleks selgelt määratleda, et vältida teenuste tihedat sidumist. Konteinereid, mis sõltuvad jäigalt teise konteineri andmetest, võib olla aja jooksul keerulisem kasutusele võtta ja hooldada, vähendades konteineriseerimise ja isoleerimise laiemaid eeliseid. LUGEGE EDASI

  • › Kuidas kasutada oma autot elektrikatkestuse ajal hädaolukorras elektriallikana
  • › Astronoomid avastavad Maale lähima musta augu (mis on veel kaugel)
  • › StumbleUpon muutis Interneti väikeseks
  • › Kuidas kasutada sündmuste planeerimisel Microsoft Exceli malle
  • › Kuidas kõigis oma seadmetes Google’ist välja logida
  • › Kui palju raha säästab LED-jõulutuledele üleminek?

Sissejuhatus

Docker on konteinerplatvorm, mis on kerge, virtualiseeritud, kaasaskantav, tarkvaraga määratletud standardkeskkond, mis võimaldab tarkvaral töötada isoleeritult muust füüsilises hostmasinas töötavast tarkvarast. Docker on tarkvaraarenduse pideva arendamise ja integreerimise aspekti määrav komponent. Pakkudes järjepidevat käitusaegset keskkonda, tagab Docker, et tarkvara käitub sama olenemata füüsilisest hostmasinast, millel see on juurutatud. Dockeri ökosüsteemi põhjaliku ülevaate saamiseks vaadake seda artiklit. Kuigi Dockeri konteinerid on iseseisvad, peavad nad mõnikord jagama juurdepääsu andmetele või säilitama andmeid kettale pärast konteineri peatamist. Andmed võivad olla andmebaaside, logifailide või kasutaja loodud andmete kujul. Selliseid andmeid ei saa Dockeri pildi konfiguratsioonifaili lisada, kuid need peavad olema saadaval, et teie rakendus saaks ootuspäraselt käitada. Dockeri konteinerites andmete jagamist ja säilitamist haldab Docker Volumes. Dockeri köiteid saab luua konteineri loomise ajal või hiljem luua ja konteineritele kinnitada. Selles õpetuses käsitleme nelja erinevat viisi andmete jagamiseks konteinerite vahel.

Eeldused

  • Seadistage Ubuntu 20.04 töötav server ja looge sudo-õigustega mitte-root-kasutaja. Järgmiste toimingute jätkamiseks logige sisse mitte-root kasutajaga.
  • Installige Docker – meil on õpetus Dockeri installimise ja kasutamise kohta Ubuntus. Peate järgima samme 1, 2, 3 ja 4. See peaks toimima iga Ubuntu distributsiooni puhul.

Pange tähele, et kui töötame versiooniga Ubuntu 20.04, töötavad Dockeri juhised ja käsud kõigis teistes operatsioonisüsteemides, kuhu on installitud Docker ja sudo kasutaja on dokkimisrühma lisatud, nagu ülaltoodud eeltingimustes kirjeldatud.

1. samm: looge sõltumatud Dockeri köited

Alustame sõltumatute köidete loomisest, mis pole seotud ühegi Dockeri konteineriga. Selle saavutamiseks on meil käsk docker volume create, mis võeti kasutusele Dockeri versioonis 1.9. Sisestage järgmine käsk, et luua köite nimega Step1DataVolume :

dokkimismahu loomine — nimi Step1DataVolume

Peaksite nägema järgmist väljundit, mis näitab, et köite loomine õnnestus: Dockeri köite loomine Nüüd, kui meil on iseseisev köide, saame selle kasutamiseks näitena luua uue konteineri ametlikust Ubuntu pildist. Sisestage konteineri loomiseks ja köite lisamiseks järgmine käsk:

Docker Run -ti —rm -v Step1DataVolume:/Step1DataVolume ubuntu

Selles käsus
kustutab lipp —rm konteineri pärast väljumist automaatselt. Lippu
-v kasutatakse helitugevuse määramiseks ja ühendamiseks. Lipp
-v võtab ruumala nime, täiskooloni ja absoluutse tee konteineris, kuhu maht peaks ilmuma. Pidage meeles, et käsu käivitamisel luuakse need määratud kataloogid, kui teel pole. Kui need on juba olemas, peidab ühendatud köide olemasoleva sisu. -ti
lipu puhul
annab -t juurdepääsu terminalile ja
-i võimaldab meil terminali kaudu konteineriga suhelda. Kui olete konteineris sees, käivitage järgmine käsk, et kirjutada mõned andmed köitele:

echo «Step One näidistekst» > /Step1DataVolume/StepOne.txt

Konteinerist väljumiseks tippige
exit ja vajutage
sisestusklahvi. Nagu selgitatud, kustutatakse konteiner väljumisel automaatselt tänu
lipule —rm, kuid helitugevus on siiski juurdepääsetav. Kontrollimaks, kas köide on endiselt olemas, saate kasutada
käsku Docker volume inspect:

dokkeri helitugevuse kontrollimine Step1 DataVolume

Peaksite nägema järgmist väljundit: Dockeri helitugevuse kontroll Järgmisena loome uue konteineri. Kõigepealt lisage helitugevus ja vaadake, kas pääseme juurde eelmises konteineris loodud tekstile. Sisestage järgmine käsk konteineri loomiseks ja käitamiseks
ubuntu pildi abil:

Docker Run -ti —rm -v Step1DataVolume:/Step1DataVolume ubuntu

Käivitage konteineris järgmine käsk, et kontrollida, kas
fail StepOne.txt on olemas:

kass /Step1DataVolume/StepOne.txt

Peaksite nägema sarnast väljundit: Dockeri köite sisu 1 Järgmisena tippige välja
exit ja vajutage
konteinerist väljumiseks sisestusklahvi. Selles etapis õppisite, kuidas käsitleda andmete püsivust sõltumatute Dockeri köidete abil ja kuidas köiteid konteineritele kinnitada.

2. samm: looge Dockeri köide, mis säilitab konteineri kustutamisel andmeid

Selles etapis kasutame mahu loomiseks ühte käsku samaaegselt konteineri loomisega. Seejärel kustutame konteineri ja ühendame mahu uue konteineriga. Käsk on sarnane 1. sammus kasutatud käsuga, kuid lisame ühe lipu
—nimi, et määrata konteineri nimi:

docker run -ti —name=Step2Container1 -v Step2DataVolume:/Step2DataVolume ubuntu

Konteineris olles sisestage andmete mahule kirjutamiseks ja andmete olemasolu kontrollimiseks järgmine käsk:

echo «Teise sammu näidistekst» > /Step2DataVolume/StepTwo.txt kass /Step2DataVolume/StepTwo.txt

Allpool on kolme käsu väljund: Püsiv Dockeri helitugevus Järgmisena väljuge konteinerist. Kui taaskäivitate konteineri järgmise käsuga, lisatakse helitugevus automaatselt:

dokkeri käivitamine -ai Step2Container1

Kontrollige konteineris, et köide on ühendatud, kontrollides
faili StepTwo.txt olemasolu käsuga:

kass /Step2DataVolume/StepTwo.txt

Siin on väljund: Dockeri helitugevus pärast taaskäivitamist Nüüd saate konteinerist väljuda. Docker takistab muu konteineri viidatud köite eemaldamist. Võite proovida helitugevust eemaldada käsuga:

doki maht rm Step2DataVolume

Peaksite väljundis nägema veateadet: Vastus veale
Eemaldame konteineri, kasutades docker rm käsuga väljundis näidatud konteineri ID-d :

docker rm e3932e65e484bbf4524ca8de1b1dd99c4e92c12f92a9d6b0567a643d0aa6bb2d

Asendage esiletõstetud
konteineri ID
teie terminalis kuvatud konteineri ID-ga. Käsk eemaldab konteineri, kuid ei eemalda meie loodud köidet. Saate loetleda saadaolevad köited, kasutades
käsku docker volume ls, et kontrollida: Siin on väljund: Dockeri helitugevuse loend 2. sammus loodud konteineri eemaldamiseks sisestage järgmine käsk:

doki maht rm Step2DataVolume

Selles etapis saite konteineri loomisega samal ajal luua Dockeri köite. Vaatame, kuidas saame olemasolevast andmetega kataloogist köite luua.

3. toiming: Dockeri köite loomine olemasolevast andmetega kataloogist

Kui soovite andmeid köitesse kopeerida, saate konteineri loomise ajal luua köite ja anda tee baaspildis olevaid andmeid sisaldavasse kataloogi. Allolevas käsus loome konteineri ja lisame andmemahu aadressil
/var, mis on kataloog, mis sisaldab andmeid baaspildis:

Docker Run -ti —rm -v Step3DataVolume:/var ubuntu

Kui käsk käivitub,
kopeeritakse põhikujutise /var kataloogi sisu köitesse. Köidet saab kinnitada uue konteineri külge. Järgmisena väljuge konteinerist: Looge Dockeri helitugevus Sisestage konteineri loomiseks järgmine käsk, lisage köide ja loetlege köite sisu, kasutades
käsku ls:

Docker Run —rm -v Step3DataVolume:/Step3DataVolume ubuntu ls Step3DataVolume

Peaksite nägema sarnast väljundit käsust, mis on koopia
kataloogi /var sisust põhipildist, mis on nüüd saadaval
Step3DataVolume’is: Kopeeri Dockeri köide Kuigi
kataloogi /var ühendamine, nagu me selles näites tegime, võib olla ebapraktiline, aitab see meil mõista, et saate ühendada mis tahes kohandatud piltidega loodud kataloogi Dockeri köitele, et muuta andmed kättesaadavaks teistele konteineritele.

4. toiming: andmete jagamine mitme Dockeri konteineri vahel

Enamikul juhtudel soovite, et ühe Dockeri köite andmetele pääseks juurde mitu konteinerit. Eelmistes näidetes oleme köite kinnitanud ainult ühe konteineri külge. Nüüd saate teada, kuidas köidet mitmele konteinerile kinnitada. Kuigi saate seda hõlpsalt saavutada, ei tegele Docker failide lukustamisega. Kui mitu konteinerit kirjutavad samale köitele, peate nendes konteinerites töötavad rakendused eraldi kujundama, et nad saaksid käsitleda kirjutamist jagatud andmesalvedesse, et vältida andmete rikkumist.

  • Looge
    Step4Container1 ja
    Step4DataVolume

Nimega konteineri loomiseks kasutage
käsku Docker Run koos lipuga —name:

docker run -ti —name=Step4Container1 -v Step4DataVolume:/Step4DataVolume ubuntu

Tekstifaili loomiseks ja teksti lisamiseks käivitage konteineris järgmine käsk:

echo «Step Four näidistekst» > /Step4DataVolume/StepFour.txt

Pärast seda väljuge konteinerist ja minge tagasi hostkeskkonda. Nüüd tahame luua teise konteineri ja ühendada
Step4Container1 mahud sinna.

  • Looge
    Step4Container2 ja kinnitage mahutist
    Step4Container1 olevad köited

Käivitage järgmine käsk, et luua
Step4Container2 ja ühendada
Step4Container1 köiteid:

Docker Run -ti —name=Step4Container2 — Volumes-Step4Container1 ubuntust

Andmete püsivuse kontrollimiseks kasutage konteineris käsku cat:

kass /Step4DataVolume/StepFour.txt

Peaksite nägema järgmist väljundit: Konteinerite andmete jagamine Saame
Step4Container2 failile lisada veel teksti, sisestades järgmise käsu:

kaja «Lisame teksti Step4Container2 sees» >> /Step4DataVolume/StepFour.txt

Pärast seda väljuge konteinerist ja me läheme tagasi
Step4Container1 juurde, et kontrollida, kas andmed on endiselt olemas.

  • Kontrollige erinevate konteinerite vahel Dockeri mahus tehtud muudatusi

Muudatuste vaatamiseks taaskäivitage
Step4Container1, kasutades käsku:

dokkeri käivitamine -ai Step4Container1

Kontrollige muudatusi, kasutades käsku:

kass /Step4DataVolume/StepFour.txt

Peaksite nägema alloleva ekraanipildiga sarnast väljundit: Kopeeritud konteineri andmed Kui olete veendunud, et mõlemad konteinerid saavad andmeid samale köitele lugeda ja kirjutada, saate nüüd konteinerist väljuda. Nagu mainitud, ei tegele Docker failide lukustamisega, see on teie konteinerites töötava rakendusloogika ülesanne, mis peaks käsitlema lugemis- ja kirjutamisjuurdepääsu jagatud andmesalvedele. Docker lubab köiteid paigaldada kirjutuskaitstud kujul, et vältida andmete juhuslikku rikkumist konteinerite poolt, mis nõuavad ainult kirjutuskaitstud juurdepääsu, lisades
:ro, nagu on näidatud järgmises näites.

  • Köite paigaldamine Dockeri konteinerisse kirjutuskaitstud kujul

Selle näite jaoks loome konteineri nimega
Step4Container3. Loomise käsus
ühendame Step4Container1 köited ja lisame
:ro, et täpsustada, et sellel konteineril on kirjutuskaitstud juurdepääs, kuid see ei saa mahule kirjutada. Käivitage oma terminalis järgmine käsk:

docker run -ti —name=Step4Container3 —volumes-from Step4Container1:ro ubuntu

Kui olete konteineris sees, saate lugeda köites olevat tekstifaili, sisestades järgmise käsu:

kass /Step4DataVolume/StepFour.txt

Read Only Mount Kui aga proovite faili eemaldada käsuga:

rm /Step4DataVolume/StepFour.txt

Teie terminalis kuvatakse tõrketeade, näiteks: Ainult lugemiseks mõeldud viga Kui olete lugemis- ja kirjutamisõigused kinnitanud, saate konteinerist väljuda. Kui soovite selles õpetuses loodud konteinereid ja helitugevust puhastada, käivitage järgmised käsud:

docker rm Step4Container1 Step4Container2 Step4Container3 doki maht rm Step4DataVolume

Selles etapis õppisite, kuidas jagada andmeid mitme konteineri vahel, kasutades Dockeri köiteid, ning ühendama andmemahtusid konteineritesse kirjutuskaitstud kujul.

Järeldus

Selles õpetuses lõite mõned Dockeri köited ja õppisite, kuidas jagada andmeid Dockeri konteinerite vahel. Konteinerite vahel andmete jagamisega tegelemisel märkisime, et konteineris olev individuaalne rakendusloogika peab käsitlema failide lukustamist, et vältida andmete rikkumist jagatud andmesalvedesse kirjutamisel, kuna Dockeril pole failide lukustamise käsitlemiseks rakendust. Dockeri kasutamise kohta lisateabe saamiseks võite vaadata meie ajaveebi rohkem õpetusi:

  • Kuidas jagada andmeid Dockeri konteineri ja hosti vahel
  • Dockeri ressursside puhastamine – pildid, konteinerid ja köited
  • Laraveli, Nginxi ja MySQL-i juurutamine Docker Compose’iga
  • Dockeri installimine ja seadistamine CentOS 7-s

Head arvuti kasutamist!

  • Umbes
  • Viimased


Leave a comment

Your email address will not be published. Required fields are marked *