Docker Uvodni Vodič: Brzo Pokrenite Kontejnerizaciju Vaše Aplikacije
Docker Uvodni Vodič: Brzo Pokrenite Kontejnerizaciju Vaše Aplikacije
Docker je postao neizostavan dio modernog razvoja i implementacije softvera. Iako su rasprave o Kubernetesu sveprisutne, Docker je i dalje preferirani alat za mnoge tvrtke za izgradnju, testiranje i implementaciju aplikacija. Ovaj će vas članak brzo uvesti u Docker, upoznati vas s njegovim osnovnim konceptima i pružiti praktičan primjer koji će vam pomoći da započnete s kontejnerizacijom vaše aplikacije.
Docker Osnovni Koncepti
Prije nego što započnete s praksom, važno je razumjeti neke od Dockerovih osnovnih koncepata:
-
Slika (Image): Slika je predložak samo za čitanje koji sadrži sve što je potrebno za pokretanje aplikacije: kod, okruženje za izvođenje, sistemske alate, biblioteke i ovisnosti. Slično je slici virtualnog stroja, ali je lakša.
-
Kontejner (Container): Kontejner je pokrenuta instanca stvorena iz slike. To je instanca slike u vremenu izvođenja koja sadrži aplikaciju i sve njezine ovisnosti. Kontejneri su međusobno izolirani i imaju vlastiti datotečni sustav, procese i mrežni prostor.
-
Docker Hub: Docker Hub je javno spremište slika s kojeg možete preuzeti unaprijed izgrađene slike ili prenijeti vlastite slike. Slično je GitHubu, ali je specijaliziran za Docker slike.
-
Dockerfile: Dockerfile je tekstualna datoteka koja sadrži sve upute za izgradnju Docker slike. Pisanjem Dockerfilea možete automatizirati proces stvaranja slike.
-
Docker Compose: Docker Compose je alat za definiranje i pokretanje Docker aplikacija s više kontejnera. Omogućuje vam konfiguriranje usluga aplikacije pomoću YAML datoteke, a zatim pokretanje ili zaustavljanje svih usluga pomoću jedne naredbe.
Docker Instalacija
Prvo morate instalirati Docker. Docker nudi instalacijske pakete za različite operativne sustave. Posjetite Docker službenu web stranicu i slijedite odgovarajuće upute za instalaciju.
Nakon instalacije, možete provjeriti je li Docker ispravno instaliran pokretanjem naredbe docker --version.
Kontejnerizacija jednostavne Python aplikacije
Stvorit ćemo jednostavnu Python aplikaciju i kontejnerizirati je pomoću Dockera.
1. Stvaranje Python aplikacije
Stvorite datoteku pod nazivom app.py sa sljedećim kodom:
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')
Ova jednostavna Flask aplikacija će vratiti "Hello, Docker!" na korijenskoj putanji /.
2. Stvaranje requirements.txt datoteke
Aplikacija ovisi o Flask biblioteci, stoga moramo stvoriti datoteku requirements.txt za deklariranje tih ovisnosti.
Flask
3. Stvaranje Dockerfilea
Stvorite datoteku pod nazivom Dockerfile i dodajte sljedeći sadržaj:
# Koristite službenu Python sliku kao osnovnu sliku
FROM python:3.9-slim-buster
# Postavite radni direktorij
WORKDIR /app
# Kopirajte requirements.txt datoteku u radni direktorij
COPY requirements.txt .
# Instalirajte ovisnosti
RUN pip install --no-cache-dir -r requirements.txt
```# Kopiranje koda aplikacije u radni direktorij
COPY app.py .
# Izlaganje porta 5000
EXPOSE 5000
# Definiranje naredbe za pokretanje
CMD ["python", "app.py"]
Dockerfile objašnjenje:
FROM python:3.9-slim-buster: Specificira baznu sliku kao Python 3.9 u slim verziji.WORKDIR /app: Postavlja radni direktorij unutar kontejnera na/app.COPY requirements.txt .: Kopirarequirements.txtdatoteku iz trenutnog direktorija u/appdirektorij kontejnera.RUN pip install --no-cache-dir -r requirements.txt: Pokrećepipnaredbu unutar kontejnera za instalaciju zavisnosti specificiranih urequirements.txtdatoteci.--no-cache-dirparametar može smanjiti veličinu slike.COPY app.py .: Kopiraapp.pydatoteku iz trenutnog direktorija u/appdirektorij kontejnera.EXPOSE 5000: Deklarira da će kontejner slušati na portu 5000.CMD ["python", "app.py"]: Definira naredbu koja se izvršava pri pokretanju kontejnera.
4. Izgradnja Docker slike
U direktoriju koji sadrži Dockerfile, pokrenite sljedeću naredbu za izgradnju Docker slike:
docker build -t my-python-app .
docker build: Naredba za izgradnju slike.-t my-python-app: Dodjeljuje ime slici (my-python-app)..: Specificira direktorij u kojem se nalazi Dockerfile (trenutni direktorij).
Proces izgradnje može potrajati neko vrijeme, ovisno o brzini mreže i veličini zavisnosti.
5. Pokretanje Docker kontejnera
Koristite sljedeću naredbu za pokretanje Docker kontejnera:
docker run -d -p 5000:5000 my-python-app
docker run: Naredba za pokretanje kontejnera.-d: Pokreće kontejner u odvojenom načinu rada (radi u pozadini).-p 5000:5000: Mapira port 5000 na hostu na port 5000 u kontejneru.my-python-app: Specificira ime slike koju želite koristiti.
6. Verifikacija aplikacije
U pregledniku posjetite http://localhost:5000, trebali biste vidjeti "Hello, Docker!".
7. Zaustavljanje i brisanje kontejnera
Koristite sljedeću naredbu za zaustavljanje kontejnera:
docker stop
`` Može se provjeriti pomoću naredbe docker ps.
Koristite sljedeću naredbu za brisanje kontejnera:
docker rm
Docker Compose Uvod
Ako se vaša aplikacija sastoji od više servisa, možete koristiti Docker Compose za upravljanje njima.
1. Kreiranje docker-compose.yml datoteke
Kreirajte datoteku pod nazivom docker-compose.yml i dodajte sljedeći sadržaj:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml objašnjenje:* version: "3.9": Specificira verziju Docker Compose datoteke.
services: Definira servise aplikacije.web: Definira servis pod nazivom "web".image: my-python-app: Specificira image koji servis koristi.ports: Definira mapiranje portova.
2. Pokretanje Aplikacije
U direktoriju koji sadrži docker-compose.yml datoteku, pokrenite sljedeću naredbu za pokretanje aplikacije:
docker-compose up -d
docker-compose up: Naredba za pokretanje aplikacije.-d: Pokreće kontejnere u odvojenom (detached) modu.
3. Zaustavljanje Aplikacije
Koristite sljedeću naredbu za zaustavljanje aplikacije:
docker-compose down
Docker Najbolje Prakse Sigurnosti
Kao što se može vidjeti iz diskusije, sigurnost Docker image-a je važno pitanje. Slijede neke Docker najbolje prakse sigurnosti:
- Koristite službene image-e: Koristite službene image-e kad god je to moguće, jer su ti image-i obično skenirani i održavani za sigurnost.
- Skenirajte image-e za ranjivosti: Koristite alate kao što je Trivy za skeniranje poznatih ranjivosti u image-ima i ažurirajte image-e na vrijeme.
- Koristite princip najmanjih privilegija: Izbjegavajte pokretanje kontejnera kao root korisnik.
- Ograničite resurse kontejnera: Koristite cgroups za ograničavanje upotrebe CPU-a i memorije kontejnera.
- Redovno ažurirajte image-e: Održavajte image-e ažurnim kako biste popravili sigurnosne propuste.
- Koristite alate za sigurnosno skeniranje: Alati poput Snyk, Clair itd. se mogu integrirati u vaš CI/CD proces za automatsko skeniranje ranjivosti image-a.
ZaključakOvaj članak pruža brzi vodič za Docker, pokrivajući ključne koncepte, korake instalacije i jednostavan primjer kontejnerizacije Python aplikacije. Učenjem ovih osnova, možete početi koristiti Docker za izgradnju, testiranje i implementaciju vaših aplikacija. Zapamtite, sigurnost je ključna, uvijek obratite pažnju na sigurnost Docker image-a i poduzmite odgovarajuće mjere za zaštitu vaše aplikacije. Iako je Kubernetes moćan u orkestraciji kontejnera velikih razmjera, Docker je i dalje jednostavno i učinkovito rješenje u mnogim scenarijima. Ovladavanjem Dockerom, bit ćete bolje opremljeni za suočavanje s izazovima modernog razvoja i implementacije softvera.





