I-10 Essential Docker Concepts Ichazwe Ngaphansi Kwemizuzu eyi-10


Isithombe nguMbhali
# Isingeniso
I-Docker senze kwaba lula ukuthi sakha futhi sisebenzisa kanjani izinhlelo zokusebenza. Kodwa lapho uqala ukufunda i-Dockeramagama ngokuvamile angase adideke. Cishe uzozwa amagama anjengokuthi “izithombe,” “izitsha,” kanye “namavolumu” ngaphandle kokuqonda ukuthi ahlangana kanjani. Le ndatshana izokusiza ukuthi uqonde imiqondo ewumgogodla ye-Docker okudingeka uyazi.
Ake siqale.
# 1. Isithombe se-Docker
Isithombe se-Docker yi-artifact equkethe konke uhlelo lwakho lokusebenza ludinga ukusebenza: ikhodi, isikhathi sokusebenza, imitapo yolwazi, okuguquguqukayo kwendawo, namafayela okumisa.
Izithombe aziguquleki. Uma usudale isithombe, asishintshi. Lokhu kuqinisekisa ukuthi uhlelo lwakho lokusebenza lusebenza ngendlela efanayo kukhompuyutha ephathekayo yakho, emshinini wozakwenu, futhi ekukhiqizeni, kuqedwe iziphazamisi eziqondene nendawo ethile.
Nansi indlela osakha ngayo isithombe kusuka ku-Dockerfile. I-Dockerfile iresiphi echaza ukuthi wakha kanjani isithombe:
docker build -t my-python-app:1.0 .
I -t umaka isithombe sakho ngegama nenguqulo. I . utshela u-Docker ukuthi abheke i-Dockerfile ohlwini lwamanje. Uma sesakhiwe, lesi sithombe siba isifanekiso esisebenziseka kabusha sohlelo lwakho lokusebenza.
# 2. Isitsha se-Docker
Isiqukathi yilokho okutholayo uma usebenzisa isithombe. Kuyindawo engayodwa lapho uhlelo lwakho lokusebenza lusebenza khona.
docker run -d -p 8000:8000 my-python-app:1.0
I -d ifulegi liqhuba isiqukathi ngemuva. I -p 8000:8000 amamephu port 8000 kumsingathi wakho ukuze athuthe 8000 esitsheni, okwenza uhlelo lwakho lokusebenza lufinyeleleke ku-localhost:8000.
Ungasebenzisa iziqukathi eziningi kusuka esithombeni esifanayo. Basebenza ngokuzimela. Lena yindlela ohlola ngayo izinguqulo ezihlukene ngesikhathi esisodwa noma ukala ngokuvundlile ngokusebenzisa amakhophi ayishumi ohlelo olufanayo.
Iziqukathi azisindi. Ngokungafani nemishini ebonakalayo, ayiqalisi isistimu yokusebenza egcwele. Baqala ngemizuzwana futhi babelane nge-kernel yomsingathi.
# 3. Dockerfile
I-Dockerfile iqukethe imiyalelo yokwakha isithombe. Kuyifayela lombhalo elitshela i-Docker ngqo ukuthi ungayisetha kanjani indawo yesicelo sakho.
Nali i-Dockerfile yohlelo lokusebenza lwe-Flask:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]
Ake sihlukanise umyalelo ngamunye:
FROM python:3.11-slim– Qala ngesithombe esiyisisekelo esifakwe iPython 3.11. Okuhlukile okuzacile kuncane kunesithombe esijwayelekile.WORKDIR /app– Setha inkomba yokusebenza ku-/app. Yonke imiyalo elandelayo iqala lapha.COPY requirements.txt .– Kopisha kuphela ifayela lezidingo kuqala, hhayi yonke ikhodi yakho okwamanje.RUN pip install --no-cache-dir -r requirements.txt– Faka ukuncika kwePython. Ifulegi –no-cache-dir ligcina usayizi wesithombe omncane.COPY . .– Manje kopisha yonke enye ikhodi yakho yesicelo.EXPOSE 8000– Idokhumenti yokuthi uhlelo lokusebenza lusebenzisa i-port 8000.CMD ["python", "app.py"]— Chaza umyalo ozosebenza lapho isiqukathi siqala.
Ukuhleleka kwale miyalo kubalulekile ukuthi ukwakhiwa kwakho kuthatha isikhathi esingakanani, yingakho sidinga ukuqonda izendlalelo.
# 4. Izendlalelo zesithombe
Yonke imiyalo ku-Dockerfile idala isendlalelo esisha. Lezi zendlalelo zinqwabelana phezu kwesinye ukuze zakhe isithombe sokugcina.
I-Docker ibamba isendlalelo ngasinye. Uma wakha kabusha isithombe, i-Docker ibheka ukuthi ungqimba ngalunye ludinga ukuphinda ludalwe kabusha. Uma kungekho okushintshile, iphinda isebenzise isendlalelo esifakwe kunqolobane esikhundleni sokwakha kabusha.
Yingakho sikopisha requirements.txt ngaphambi kokukopisha lonke uhlelo lokusebenza. Ukuncika kwakho kushintsha njalo kunekhodi yakho. Uma ulungisa app.pyI-Docker iphinda isebenzise isendlalelo esifakwe kunqolobane esifake okuncikile futhi yakha kabusha izendlalelo kuphela ngemva kwekhophi yekhodi.
Nasi isakhiwo sesendlalelo esivela ku-Dockerfile yethu:
- Isithombe se-Base Python (
FROM) - Setha inkomba yokusebenza (
WORKDIR) - Kopisha
requirements.txt(COPY) - Faka okuncikile (
RUN pip install) - Kopisha ikhodi yesicelo (
COPY) - Imethadatha mayelana nembobo (
EXPOSE) - Umyalo ozenzakalelayo (
CMD)
Uma ushintsha kuphela ikhodi yakho yePython, i-Docker yakha kabusha izendlalelo ezingu-5-7 kuphela. Izendlalelo 1-4 zivela kunqolobane, okwenza ukwakha kusheshe kakhulu. Ukuqonda izendlalelo kuyakusiza bhala ama-Dockerfiles asebenzayo. Beka amafayela ashintsha njalo ekugcineni kanye nokuncika okuzinzile ekuqaleni.
# 5. I-Docker Volumes
Iziqukathi ezesikhashana. Uma ususa isiqukathi, yonke into engaphakathi iyanyamalala, okuhlanganisa idatha edalwe uhlelo lwakho lokusebenza.
Amavolumu e-Docker ukuxazulula le nkinga. Ziyizinhla zemibhalo ezikhona ngaphandle kwesistimu yefayela yesiqukathi futhi ziyaqhubeka ngemva kokukhishwa kwesiqukathi.
docker run -d
-v postgres-data:/var/lib/postgresql/data
postgres:15
Lokhu kudala ivolumu ebizwa ngokuthi postgres-data futhi uyikhweza /var/lib/postgresql/data ngaphakathi kwesitsha. Amafayela akho esizindalwazi asinda ekuqaliseni kabusha kwesitsha nokususwa.
Ungakwazi futhi ukukhweza izinkomba emshinini wakho wokusingathwa, owusizo ngesikhathi sokuthuthukiswa:
docker run -d
-v $(pwd):/app
-p 8000:8000
my-python-app:1.0
Lokhu kukhweza uhla lwemibhalo lwakho lwamanje kusiqukathi esiku /app. Izinguquko ozenzayo kumafayela kumsingathi wakho zivela ngokushesha esitsheni, zivumela ukuthuthukiswa okubukhoma ngaphandle kokwakha kabusha isithombe.
Kunezinhlobo ezintathu zama-mounts:
- Imiqulu eqanjiwe (
postgres-data:/path) – Iphethwe yi-Docker, ehamba phambili ngedatha yokukhiqiza - Hlanganisa izikhwebu (
/host/path:/container/path) – Faka noma iyiphi inkomba yokusingatha, ilungele ukuthuthukiswa - tmpfs izintaba – Gcina idatha ngenkumbulo kuphela, iwusizo kumafayela esikhashana
# 6. I-Docker Hub
I-Docker Hub irejista yomphakathi lapho abantu babelana ngezithombe ze-Docker. Uma ubhala FROM python:3.11-slimI-Docker idonsa leso sithombe ku-Docker Hub.
Ungasesha izithombe:
Bese uwadonsele emshinini wakho:
docker pull redis:7-alpine
Ungakwazi futhi ukuphusha izithombe zakho ukuze wabelane nabanye noma uzithumele kumaseva:
docker tag my-python-app:1.0 username/my-python-app:1.0
docker push username/my-python-app:1.0
I-Docker Hub isingatha izithombe ezisemthethweni zesoftware edumile njenge I-PostgreSQL, I-Redis, Nginx, I-Pythonnezinye izinkulungwane. Lezi zinakekelwa abadali besofthiwe futhi zilandela izinqubo ezihamba phambili.
Kumaphrojekthi ayimfihlo, ungakha amakhosombe ayimfihlo ku-Docker Hub noma usebenzise okunye ukubhalisa njengalokhu I-Amazon Elastic Container Registry (ECR), I-Google Container Registry (GCR)noma I-Azure Container Registry (ACR).
# 7. I-Docker Compose
Izinhlelo zokusebenza zangempela zidinga amasevisi amaningi. Uhlelo lokusebenza lwewebhu olujwayelekile lune- I-Python emuva, a I-PostgreSQL database, a Redis inqolobanefuthi mhlawumbe inqubo yesisebenzi.
I-Docker Qamba ikuvumela ukuthi uchaze zonke lezi zinsizakalo ngesikhathi esisodwa Nokho Olunye Ulimi Lwemakhaphu (YAML) ifayela futhi uwaphathe ndawonye.
Dala a docker-compose.yml ifayela:
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://postgres:secret@db:5432/myapp
- REDIS_URL=redis://cache:6379
depends_on:
- db
- cache
volumes:
- .:/app
db:
image: postgres:15-alpine
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=myapp
cache:
image: redis:7-alpine
volumes:
postgres-data:
Manje qala isitaki sakho sohlelo lokusebenza ngomyalo owodwa:
Lokhu kuqala iziqukathi ezintathu: web, dbfuthi cache. I-Docker Compose iphatha inethiwekhi ngokuzenzakalelayo: isevisi yewebhu ingafinyelela kusizindalwazi ngegama lomethuleli db kanye ne-Redis egameni lomethuleli cache.
Ukumisa yonke into, sebenzisa:
Ukuze wakhe kabusha ngemva kokushintshwa kwekhodi:
docker-compose up -d --build
I-Docker Compose ibalulekile ezindaweni zokuthuthukiswa. Esikhundleni sokufaka i-PostgreSQL ne-Redis emshinini wakho, uwasebenzisa ezitsheni ngomyalo owodwa.
# 8. Amanethiwekhi Wesitsha
Uma usebenzisa iziqukathi eziningi, zidinga ukukhuluma zodwa. I-Docker idala i-virtual amanethiwekhi axhuma iziqukathi.
Ngokuzenzakalelayo, i-Docker Compose idala inethiwekhi yazo zonke izinsiza ezichazwe kweyakho docker-compose.yml. Iziqukathi zisebenzisa amagama esevisi njengamagama abasingathi. Esibonelweni sethu, isiqukathi sewebhu sixhuma ku-PostgreSQL sisebenzisa db:5432 ngoba db igama lesevisi.
Ungakwazi futhi ukudala amanethiwekhi ngokwezifiso ngokwenza:
docker network create my-app-network
docker run -d --network my-app-network --name api my-python-app:1.0
docker run -d --network my-app-network --name cache redis:7
Manje i api isitsha singafinyelela eRedis ku cache:6379. I-Docker inikeza abashayeli benethiwekhi abambalwa, ozosebenzisa okulandelayo kaningi:
- ibhuloho – Inethiwekhi ezenzakalelayo yeziqukathi kumphathi oyedwa
- umphathi – Isiqukathi sisebenzisa inethiwekhi yomsingathi ngokuqondile (akukho ukuhlukaniswa)
- akukho – Isitsha asikwazi ukufinyelela kunethiwekhi
Amanethiwekhi ahlinzeka ngokuhlukaniswa. Iziqukathi ezikumanethiwekhi ahlukene azikwazi ukuxhumana ngaphandle kokuthi zixhumeke ngokucacile. Lokhu kuwusizo ekuvikelekeni njengoba ungakwazi ukuhlukanisa i-frontend yakho, i-backend, namanethiwekhi esizindalwazi.
Ukuze ubone wonke amanethiwekhi, sebenzisa:
Ukuze uhlole inethiwekhi futhi ubone ukuthi yiziphi iziqukathi ezixhunyiwe, sebenzisa:
docker network inspect my-app-network
# 9. Okuguquguqukayo kwemvelo kanye nezimfihlo ze-Docker
Ukucushwa kwekhodi eqinile kucela inkinga. Iphasiwedi yakho yesizindalwazi akufanele ifane ekuthuthukisweni nasekukhiqizeni. Okhiye bakho be-API nakanjani akufanele bahlale ku-codebase yakho.
I-Docker ikusingatha lokhu okuguquguqukayo kwemvelo. Zidlulisele ngesikhathi sokusebenza ne -e noma --env flag, futhi isiqukathi sakho sithola ukulungiselelwa esikudingayo ngaphandle kokubhaka amanani esithombeni.
I-Docker Compose yenza lokhu kuhlanzeke. Khomba ku- .env ifayela futhi ugcine izimfihlo zakho ngaphandle kolawulo lwenguqulo. Shintshanisa ungene .env.production uma uphakela, noma uchaza okuguquguqukayo kwendawo ngqo kufayela lakho lokuqamba uma kungenazwelo.
Izimfihlo ze-Docker thatha lokhu ngokuqhubekayo ukuze uthole izindawo zokukhiqiza, ikakhulukazi kumodi ye-Swarm. Esikhundleni sezinto eziguquguqukayo zemvelo – okuyinto kungaba zivela kulogi noma ezinhlwini zenqubo – izimfihlo zibethelwa ngesikhathi sokuthutha futhi lapho kuphumuziwe, bese zifakwa njengamafayela esitsheni. Amasevisi azidingayo kuphela afinyelelayo. Enzelwe amagama ayimfihlo, amathokheni, izitifiketi, nanoma yini enye engaba yingozi uma iputshuka.
Iphethini ilula: hlukanisa ikhodi kusuka ekucushweni. Sebenzisa okuguquguqukayo kwendawo ekucushweni okujwayelekile nezimfihlo zedatha ebucayi.
# 10. Ukubhaliswa Kwesitsha
I-Docker Hub isebenza kahle ezithombeni ezisesidlangalaleni, kodwa awufuni izithombe zohlelo lokusebenza lwenkampani yakho zitholakale esidlangalaleni. Ukubhaliswa kweziqukathi kuyisitoreji sangasese sezithombe zakho ze-Docker. Izinketho ezidumile zifaka:
Kuzinketho ezingenhla ngakunye, ungalandela inqubo efanayo ukuze ushicilele, udonse, futhi usebenzise izithombe. Isibonelo, uzokwenza okulandelayo nge-ECR.
Umshini wakho wendawo noma ukuhlanganiswa okuqhubekayo nokuthunyelwa okuqhubekayo (CI/CD) isistimu kuqala ifakazela ubunikazi bayo ku-ECR. Lokhu kuvumela i-Docker ukuthi ihlanganyele ngokuphephile nerejista yakho yezithombe eziyimfihlo esikhundleni somphakathi. Isithombe se-Docker esakhiwe endaweni sinikezwa igama elifaneleke ngokugcwele elihlanganisa:
- Ikheli lokubhalisa i-akhawunti ye-AWS
- Igama lenqolobane
- Inguqulo yesithombe
Lesi sinyathelo sitshela i-Docker ukuthi isithombe sizohlala kuphi ku-ECR. Isithombe sibe sesilayishwa endaweni eyimfihlo ye-ECR. Uma sesiphushiwe, isithombe sigcinwa endaweni eyodwa, siguqulelwe, futhi sitholakale kumasistimu agunyaziwe.
Amaseva okukhiqiza afakazela ubuqiniso nge-ECR futhi alande isithombe kurejista yangasese. Lokhu kugcina ipayipi lakho lokuphakela lishesha futhi livikelekile. Esikhundleni sokwakha izithombe kumaseva okukhiqiza (ahamba kancane futhi adinga ukufinyelela kwekhodi yomthombo), wakha kanye, uphushele kurejista, bese udonsa kuwo wonke amaseva.
Amasistimu amaningi e-CI/CD ahlanganisa nokubhaliswa kweziqukathi. Eyakho Izenzo ze-GitHub ukuhamba komsebenzi kwakha isithombe, kusiphushele ku-ECR, futhi iqoqo lakho le-Kubernetes lisidonsa ngokuzenzakalelayo.
# Esonga
Le miqondo eyishumi yakha isisekelo sikaDocker. Nansi indlela abaxhuma ngayo ekuhambeni komsebenzi okuvamile:
- Bhala i-Dockerfile enemiyalo yohlelo lwakho lokusebenza, futhi wakhe isithombe kusuka ku-Dockerfile
- Qalisa isiqukathi esivela esithombeni
- Sebenzisa amavolumu ukuze uqhubekisele phambili idatha
- Setha okuguquguqukayo kwendawo kanye nezimfihlo zokucushwa nolwazi olubucayi
- Dala a
docker-compose.ymlwezinhlelo zokusebenza zezinsiza eziningi futhi uvumele amanethiwekhi e-Docker axhume iziqukathi zakho - Phusha isithombe sakho kusibhalisi, sidonse futhi usiqhube noma yikuphi
Qala ngokuqukatha umbhalo olula wePython. Engeza okuncikile nge-a requirements.txt ifayela. Bese wethula i-database usebenzisa i-Docker Compose. Isinyathelo ngasinye sakhela phezu kwemiqondo edlule. I-Docker ayiyona inkimbinkimbi uma usuqonda lezi zisekelo. Kuyithuluzi nje elipakisha izinhlelo zokusebenza ngokungaguquki futhi lizisebenzise ezindaweni ezingazodwa.
Jabulela ukuhlola!
Bala Priya C ungunjiniyela kanye nombhali wezobuchwepheshe ovela eNdiya. Uthanda ukusebenza ezimpambanweni zezibalo, izinhlelo, isayensi yedatha, nokudalwa kokuqukethwe. Izindawo zakhe azithandayo nobungcweti zifaka i-DevOps, isayensi yedatha, nokucubungula ulimi lwemvelo. Uyakujabulela ukufunda, ukubhala, ukubhala amakhodi, kanye nekhofi! Okwamanje, usebenzela ukufunda nokwabelana ngolwazi lwakhe nomphakathi wonjiniyela ngokugunyaza izifundo, imihlahlandlela yokwenza, imibono, nokuningi. I-Bala iphinda idale ukubuka konke kwensiza okubandakanyayo kanye nokufundisa ngekhodi.



