Docker Ievads: Ātri Sāc Konteinerizēt Savu Lietotni
Docker Ievads: Ātri Sāc Konteinerizēt Savu Lietotni
Docker ir kļuvis par neatņemamu mūsdienu programmatūras izstrādes un izvietošanas daļu. Lai gan diskusijas par Kubernetes ir visuresošas, Docker joprojām ir daudzu uzņēmumu iecienītākais rīks lietojumprogrammu būvēšanai, testēšanai un izvietošanai. Šis raksts tevi ātri ievedīs Docker pasaulē, iepazīstinās ar tā galvenajiem jēdzieniem un sniegs praktisku piemēru, kas palīdzēs tev sākt konteinerizēt savu lietotni.
Docker Galvenie Jēdzieni
Pirms sākt praktiski darboties, ir svarīgi saprast dažus Docker galvenos jēdzienus:
-
Attēls (Image): Attēls ir tikai lasāms šablons, kas satur visu, kas nepieciešams lietojumprogrammas palaišanai: kodu, izpildes vidi, sistēmas rīkus, bibliotēkas un atkarības. Līdzīgs virtuālās mašīnas attēlam, bet daudz vieglāks.
-
Konteiners (Container): Konteiners ir darbojošs instances no attēla. Tas ir attēla izpildlaika instances, kas satur lietojumprogrammu un visas tās atkarības. Konteineri ir savstarpēji izolēti, tiem ir sava failu sistēma, procesi un tīkla telpa.
-
Docker Hub: Docker Hub ir publiska attēlu repozitorija, no kuras vari lejupielādēt iepriekš izveidotus attēlus, kā arī augšupielādēt savus attēlus. Līdzīgs GitHub, bet paredzēts Docker attēliem.
-
Dockerfile: Dockerfile ir teksta fails, kas satur visas instrukcijas Docker attēla būvēšanai. Rakstot Dockerfile, tu vari automatizēt attēla izveides procesu.
-
Docker Compose: Docker Compose ir rīks, ko izmanto, lai definētu un palaistu vairāku konteineru Docker lietojumprogrammas. Tas ļauj tev konfigurēt lietojumprogrammas pakalpojumus, izmantojot YAML failu, un pēc tam palaist vai apturēt visus pakalpojumus ar vienu komandu.
Docker Instalēšana
Pirmkārt, tev jāinstalē Docker. Docker piedāvā instalācijas pakotnes dažādām operētājsistēmām. Apmeklē Docker oficiālo vietni un seko atbilstošajiem norādījumiem, lai to instalētu.
Pēc instalēšanas pabeigšanas vari pārbaudīt, vai Docker ir pareizi instalēts, palaižot komandu docker --version.
Konteinerizē Vienkāršu Python Lietotni
Mēs izveidosim vienkāršu Python lietotni un izmantosim Docker, lai to konteinerizētu.
1. Izveido Python Lietotni
Izveido failu ar nosaukumu app.py, kas satur šādu kodu:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Šī vienkāršā Flask lietotne atgriezīs "Hello, Docker!" saknes ceļā /.
2. Izveido requirements.txt Failu
Lietojumprogramma ir atkarīga no Flask bibliotēkas, mums jāizveido requirements.txt fails, lai deklarētu šīs atkarības.
Flask
3. Izveido Dockerfile
Izveido failu ar nosaukumu Dockerfile un pievieno šādu saturu:
# Izmanto oficiālo Python attēlu kā bāzes attēlu
FROM python:3.9-slim-buster
# Iestata darba direktoriju
WORKDIR /app
# Kopē requirements.txt failu uz darba direktoriju
COPY requirements.txt .
# Instalē atkarības
RUN pip install --no-cache-dir -r requirements.txt
# Lietojumprogrammas koda kopēšana darba direktorijā
COPY app.py .
# 5000. porta atklāšana
EXPOSE 5000
# Startēšanas komandas definēšana
CMD ["python", "app.py"]
Dockerfile skaidrojums:
FROM python:3.9-slim-buster: Norāda bāzes attēlu kā Python 3.9 vienkāršoto versiju.WORKDIR /app: Iestata konteinera darba direktoriju uz/app.COPY requirements.txt .: Kopērequirements.txtfailu no pašreizējā direktorija uz konteinera/appdirektoriju.RUN pip install --no-cache-dir -r requirements.txt: Konteinerā palaižpipkomandu, lai instalēturequirements.txtfailā norādītās atkarības. Parametrs--no-cache-dirvar samazināt attēla izmēru.COPY app.py .: Kopēapp.pyfailu no pašreizējā direktorija uz konteinera/appdirektoriju.EXPOSE 5000: Paziņo, ka konteiners klausīsies 5000. portu.CMD ["python", "app.py"]: Definē komandu, kas jāizpilda, startējot konteineru.
4. Docker attēla izveide
Direktorijā, kurā atrodas Dockerfile, palaidiet šo komandu, lai izveidotu Docker attēlu:
docker build -t my-python-app .
docker build: Komanda attēla izveidei.-t my-python-app: Norāda attēlam nosaukumu (my-python-app)..: Norāda direktoriju, kurā atrodas Dockerfile (pašreizējais direktorijs).
Izveides process var aizņemt kādu laiku, atkarībā no tīkla ātruma un atkarību lieluma.
5. Docker konteinera palaišana
Izmantojiet šo komandu, lai palaistu Docker konteineru:
docker run -d -p 5000:5000 my-python-app
docker run: Komanda konteinera palaišanai.-d: Palaiž konteineru atdalītā režīmā (darbojas fonā).-p 5000:5000: Kartē resursdatora 5000. portu uz konteinera 5000. portu.my-python-app: Norāda izmantojamā attēla nosaukumu.
6. Lietojumprogrammas pārbaude
Pārlūkprogrammā apmeklējiet http://localhost:5000, un jums vajadzētu redzēt "Hello, Docker!".
7. Konteinera apturēšana un dzēšana
Izmantojiet šo komandu, lai apturētu konteineru:
docker stop
`` Varat apskatīt, izmantojot komandu docker ps.
Izmantojiet šo komandu, lai izdzēstu konteineru:
docker rm
Docker Compose iesācējiem
Ja jūsu lietojumprogramma sastāv no vairākiem pakalpojumiem, varat izmantot Docker Compose, lai tos pārvaldītu.
1. docker-compose.yml faila izveide
Izveidojiet failu ar nosaukumu docker-compose.yml un pievienojiet šādu saturu:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml skaidrojums:* version: "3.9": Norāda Docker Compose faila versiju.
services: Definē lietojumprogrammas servisus.web: Definē servisu ar nosaukumu "web".image: my-python-app: Norāda servisa izmantoto attēlu.ports: Definē portu kartēšanu.
2. Lietojumprogrammas palaišana
Katalogā, kurā atrodas docker-compose.yml fails, palaidiet šādu komandu, lai palaistu lietojumprogrammu:
docker-compose up -d
docker-compose up: Komanda lietojumprogrammas palaišanai.-d: Palaidiet konteineru atdalītā režīmā.
3. Lietojumprogrammas apturēšana
Izmantojiet šādu komandu, lai apturētu lietojumprogrammu:
docker-compose down
Docker drošības labākā prakse
Kā redzams no diskusijas, Docker attēlu drošība ir svarīgs jautājums. Šeit ir daži Docker drošības labākās prakses:
- Izmantojiet oficiālos attēlus: Cik vien iespējams, izmantojiet oficiāli nodrošinātos attēlus, kas parasti ir skenēti un uzturēti drošībai.
- Skenējiet attēlu ievainojamības: Izmantojiet tādus rīkus kā Trivy, lai skenētu attēlus, vai nav zināmu ievainojamību, un savlaicīgi atjauniniet attēlus.
- Izmantojiet minimālo privilēģiju principu: Izvairieties no konteineru palaišanas ar root lietotāju.
- Ierobežojiet konteineru resursus: Izmantojiet cgroups, lai ierobežotu konteineru CPU un atmiņas izmantošanu.
- Regulāri atjauniniet attēlus: Uzturiet attēlus atjauninātus, lai labotu drošības ievainojamības.
- Izmantojiet drošības skenēšanas rīkus: Tādi rīki kā Snyk, Clair utt. var tikt integrēti jūsu CI/CD procesā, lai automātiski skenētu attēlu ievainojamības.





