Dockeri sissejuhatav juhend: rakenduse konteineriseerimine kiiresti
# Dockeri sissejuhatav juhend: rakenduse konteineriseerimine kiiresti
Dockerist on saanud kaasaegse tarkvaraarenduse ja juurutamise lahutamatu osa. Kuigi Kubernetes'e ümber käib tohutu arutelu, on Docker endiselt paljude ettevõtete eelistatud tööriist rakenduste loomiseks, testimiseks ja juurutamiseks. See artikkel tutvustab teile kiiresti Dockerit, tutvustab selle põhimõisteid ja pakub praktilise näite, mis aitab teil oma rakenduse konteineriseerimisega alustada.
## Docker'i põhimõisted
Enne praktiseerimist on oluline mõista mõningaid Docker'i põhimõisteid:
* **Kujutis (Image):** Kujutis on kirjutuskaitstud mall, mis sisaldab kõike, mida on vaja rakenduse käitamiseks: kood, käituskeskkond, süsteemitööriistad, teegid ja sõltuvused. Sarnane virtuaalmasina kujutisega, kuid kergem.
* **Konteiner (Container):** Konteiner on kujutisest loodud töötav instants. See on kujutise käitusaja instants, mis sisaldab rakendust ja kõiki selle sõltuvusi. Konteinerid on üksteisest isoleeritud ja neil on oma failisüsteem, protsessid ja võrguruum.
* **Docker Hub:** Docker Hub on avalik kujutiste hoidla, kust saate alla laadida eelnevalt ehitatud kujutisi ja üles laadida oma kujutisi. Sarnane GitHubiga, kuid spetsiaalselt Docker'i kujutiste jaoks.
* **Dockerfile:** Dockerfile on tekstifail, mis sisaldab kõiki Docker'i kujutise loomise juhiseid. Dockerfile'i kirjutades saate kujutise loomise protsessi automatiseerida.
* **Docker Compose:** Docker Compose on tööriist mitme konteineriga Docker'i rakenduste määratlemiseks ja käitamiseks. See võimaldab teil YAML-faili abil konfigureerida rakenduse teenuseid ja seejärel käivitada või peatada kõik teenused ühe käsuga.
## Docker'i installimine
Esmalt peate installima Docker'i. Docker pakub installipakette erinevatele operatsioonisüsteemidele. Külastage [Docker'i ametlikku veebisaiti](https://www.docker.com/get-started/) ja järgige vastavaid juhiseid installimiseks.
Pärast installimist saate Docker'i õige installimise kontrollimiseks käivitada käsu `docker --version`.
## Lihtsa Pythoni rakenduse konteineriseerimine
Loome lihtsa Pythoni rakenduse ja konteineriseerime selle Docker'i abil.
### 1. Pythoni rakenduse loomine
Looge fail nimega `app.py`, mis sisaldab järgmist koodi:
```python
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')
See lihtne Flaski rakendus tagastab juurtee / peal "Hello, Docker!".
2. Faili requirements.txt loomine
Rakendus sõltub Flaski teegist, seega peame looma faili requirements.txt, et need sõltuvused deklareerida.
Flask
3. Dockerfile'i loomine
Looge fail nimega Dockerfile ja lisage järgmine sisu:
# Kasutage ametlikku Pythoni kujutist põhikujutisena
FROM python:3.9-slim-buster
# Määrake töökataloog
WORKDIR /app
# Kopeerige fail requirements.txt töökataloogi
COPY requirements.txt .
# Installige sõltuvused
RUN pip install --no-cache-dir -r requirements.txt
```# Kopeeri rakenduse kood töökataloogi
COPY app.py .
# Ava port 5000
EXPOSE 5000
# Defineeri käivitamise käsk
CMD ["python", "app.py"]
Dockerfile'i selgitus:
FROM python:3.9-slim-buster: Määrab baaspildi Python 3.9 lihtsustatud versioonina.WORKDIR /app: Määrab konteineri töökataloogiks/app.COPY requirements.txt .: Kopeerib praeguses kataloogis oleva failirequirements.txtkonteineri kataloogi/app.RUN pip install --no-cache-dir -r requirements.txt: Käivitab konteinerispipkäsu, et installida failisrequirements.txtmääratud sõltuvused.--no-cache-dirparameeter aitab vähendada pildi suurust.COPY app.py .: Kopeerib praeguses kataloogis oleva failiapp.pykonteineri kataloogi/app.EXPOSE 5000: Deklareerib, et konteiner kuulab porti 5000.CMD ["python", "app.py"]: Määrab konteineri käivitamisel käivitatava käsu.
4. Docker'i pildi ehitamine
Käivitage Dockerfile'i sisaldavas kataloogis järgmine käsk Docker'i pildi ehitamiseks:
docker build -t my-python-app .
docker build: Käsk pildi ehitamiseks.-t my-python-app: Määrab pildile nime (my-python-app)..: Määrab Dockerfile'i asukoha (praegune kataloog).
Ehitusprotsess võib võtta aega, sõltuvalt võrgu kiirusest ja sõltuvuste suurusest.
5. Docker'i konteineri käivitamine
Käivitage Docker'i konteiner järgmise käsuga:
docker run -d -p 5000:5000 my-python-app
docker run: Käsk konteineri käivitamiseks.-d: Käivitab konteineri eraldatud režiimis (töötab taustal).-p 5000:5000: Kaardistab hostmasina pordi 5000 konteineri pordile 5000.my-python-app: Määrab kasutatava pildi nime.
6. Rakenduse valideerimine
Külastage brauseris aadressi http://localhost:5000, peaksite nägema "Hello, Docker!".
7. Konteineri peatamine ja kustutamine
Kasutage konteineri peatamiseks järgmist käsku:
docker stop
`` saab vaadata käsuga docker ps.
Kasutage konteineri kustutamiseks järgmist käsku:
docker rm
Docker Compose'i sissejuhatus
Kui teie rakendus koosneb mitmest teenusest, saate nende haldamiseks kasutada Docker Compose'i.
1. Faili docker-compose.yml loomine
Looge fail nimega docker-compose.yml ja lisage järgmine sisu:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml selgitus:* version: "3.9": määrab Docker Compose'i faili versiooni.
services: määratleb rakenduse teenused.web: määratleb teenuse nimega "web".image: my-python-app: määrab teenuse poolt kasutatava kujutise.ports: määratleb pordi kaardistused.
2. Rakenduse käivitamine
Rakenduse käivitamiseks käivitage docker-compose.yml faili sisaldavas kataloogis järgmine käsk:
docker-compose up -d
docker-compose up: käsk rakenduse käivitamiseks.-d: käitab konteineri eraldatud režiimis.
3. Rakenduse peatamine
Rakenduse peatamiseks kasutage järgmist käsku:
docker-compose down
Docker'i turvalisuse parimad praktikad
Nagu arutelust näha, on Docker'i kujutiste turvalisus oluline probleem. Siin on mõned Docker'i turvalisuse parimad praktikad:
- Kasutage ametlikke kujutisi: Võimalusel kasutage ametlikke kujutisi, mis on tavaliselt turvalisuse suhtes skannitud ja hooldatud.
- Skannige kujutiste haavatavusi: Kasutage tööriistu nagu Trivy, et skannida kujutisi teadaolevate haavatavuste suhtes ja värskendage kujutisi õigeaegselt.
- Kasutage minimaalsete õiguste põhimõtet: Vältige konteinerite käitamist root-kasutajana.
- Piirake konteineri ressursse: Kasutage cgroups, et piirata konteineri CPU ja mälu kasutust.
- Värskendage kujutisi regulaarselt: Hoidke kujutised värskena, et parandada turvaauke.
- Kasutage turvalisuse skannimise tööriistu: Tööriistad nagu Snyk, Clair jne saab integreerida teie CI/CD protsessi, et automaatselt skannida kujutiste haavatavusi.





