Docker Introduktionsguide: Kom Hurtigt i Gang med at Containerisere Din Applikation
Docker Introduktionsguide: Kom Hurtigt i Gang med at Containerisere Din Applikation
Docker er blevet en uundværlig del af moderne softwareudvikling og -implementering. Selvom diskussionen omkring Kubernetes er allestedsnærværende, er Docker stadig det foretrukne værktøj for mange virksomheder til at bygge, teste og implementere applikationer. Denne artikel vil give dig en hurtig introduktion til Docker, hjælpe dig med at forstå dets kernekoncepter og give et praktisk eksempel, der hjælper dig med at komme i gang med at containerisere din applikation.
Docker Kernekoncepter
Inden du begynder at praktisere, er det vigtigt at forstå nogle af Dockers kernekoncepter:
-
Image (Billede): Et image er en skrivebeskyttet skabelon, der indeholder alt, hvad der er nødvendigt for at køre en applikation: kode, runtime-miljø, systemværktøjer, biblioteker og afhængigheder. Ligner et virtuelt maskinbillede, men er mere letvægtigt.
-
Container (Container): En container er en kørende instans, der er oprettet fra et image. Det er en runtime-instans af et image, der indeholder applikationen og alle dens afhængigheder. Containere er isolerede fra hinanden og har deres eget filsystem, processer og netværksrum.
-
Docker Hub: Docker Hub er et offentligt image-lager, hvor du kan downloade præbyggede images og uploade dine egne images. Ligner GitHub, men er specifikt til Docker-images.
-
Dockerfile: En Dockerfile er en tekstfil, der indeholder alle instruktioner til at bygge et Docker-image. Ved at skrive en Dockerfile kan du automatisere processen med at oprette et image.
-
Docker Compose: Docker Compose er et værktøj til at definere og køre Docker-applikationer med flere containere. Det giver dig mulighed for at konfigurere applikationens tjenester ved hjælp af en YAML-fil og derefter starte eller stoppe alle tjenester med en enkelt kommando.
Docker Installation
Først skal du installere Docker. Docker tilbyder installationspakker til forskellige operativsystemer. Besøg Docker officielle hjemmeside og følg de relevante instruktioner for at installere.
Når installationen er fuldført, kan du bekræfte, at Docker er installeret korrekt ved at køre kommandoen docker --version.
Containeriser en simpel Python-applikation
Vi vil oprette en simpel Python-applikation og bruge Docker til at containerisere den.
1. Opret Python-applikationen
Opret en fil med navnet app.py, der indeholder følgende kode:
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')
Denne simple Flask-applikation returnerer "Hello, Docker!" på rodstien /.
2. Opret filen requirements.txt
Applikationen er afhængig af Flask-biblioteket, og vi skal oprette en requirements.txt-fil for at deklarere disse afhængigheder.
Flask
3. Opret Dockerfile
Opret en fil med navnet Dockerfile, og tilføj følgende indhold:
# Brug det officielle Python-image som basisimage
FROM python:3.9-slim-buster
# Indstil arbejdsmappen
WORKDIR /app
# Kopier filen requirements.txt til arbejdsmappen
COPY requirements.txt .
# Installer afhængigheder
RUN pip install --no-cache-dir -r requirements.txt
```# Kopier applikationskoden til arbejdsmappen
COPY app.py .
# Eksponer port 5000
EXPOSE 5000
# Definer startkommandoen
CMD ["python", "app.py"]
Dockerfile beskrivelse:
FROM python:3.9-slim-buster: Angiver basisbilledet som en slank version af Python 3.9.WORKDIR /app: Indstiller arbejdsmappen inde i containeren til/app.COPY requirements.txt .: Kopierer filenrequirements.txtfra den aktuelle mappe til/app-mappen i containeren.RUN pip install --no-cache-dir -r requirements.txt: Kørerpip-kommandoen i containeren for at installere de afhængigheder, der er angivet i filenrequirements.txt. Parameteren--no-cache-dirkan reducere billedets størrelse.COPY app.py .: Kopierer filenapp.pyfra den aktuelle mappe til/app-mappen i containeren.EXPOSE 5000: Erklærer, at containeren vil lytte på port 5000.CMD ["python", "app.py"]: Definerer den kommando, der skal udføres, når containeren startes.
4. Byg Docker-billedet
I den mappe, der indeholder Dockerfile, skal du køre følgende kommando for at bygge Docker-billedet:
docker build -t my-python-app .
docker build: Kommandoen til at bygge billedet.-t my-python-app: Angiver et navn (my-python-app) for billedet..: Angiver den mappe, hvor Dockerfile er placeret (den aktuelle mappe).
Byggeprocessen kan tage noget tid, afhængigt af netværkshastigheden og størrelsen på afhængighederne.
5. Kør Docker-containeren
Brug følgende kommando til at køre Docker-containeren:
docker run -d -p 5000:5000 my-python-app
docker run: Kommandoen til at køre containeren.-d: Kører containeren i afbrudt tilstand (kører i baggrunden).-p 5000:5000: Mapper værtsmaskinens port 5000 til containerens port 5000.my-python-app: Angiver navnet på det billede, der skal bruges.
6. Bekræft applikationen
Besøg http://localhost:5000 i en browser, og du skulle kunne se "Hello, Docker!".
7. Stop og slet containeren
Brug følgende kommando til at stoppe containeren:
docker stop
`` Kan ses ved hjælp af kommandoen docker ps.
Brug følgende kommando til at slette containeren:
docker rm
Introduktion til Docker Compose
Hvis din applikation består af flere tjenester, kan du bruge Docker Compose til at administrere dem.
1. Opret filen docker-compose.yml
Opret en fil med navnet docker-compose.yml, og tilføj følgende indhold:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml beskrivelse:* version: "3.9": Angiver versionen af Docker Compose-filen.
services: Definerer applikationens services.web: Definerer en service ved navn "web".image: my-python-app: Angiver det image, som servicen bruger.ports: Definerer port mapping.
2. Start applikationen
I den mappe, der indeholder docker-compose.yml-filen, skal du køre følgende kommando for at starte applikationen:
docker-compose up -d
docker-compose up: Kommandoen til at starte applikationen.-d: Kører containeren i detached mode (i baggrunden).
3. Stop applikationen
Brug følgende kommando til at stoppe applikationen:
docker-compose down
Docker Sikkerhedsbedste Praksis
Som det fremgår af diskussionen, er sikkerheden af Docker-images et vigtigt spørgsmål. Her er nogle Docker sikkerhedsbedste praksisser:
- Brug officielle images: Brug så vidt muligt de officielt leverede images, da disse normalt er sikkerhedsscannede og vedligeholdt.
- Scan images for sårbarheder: Brug værktøjer som Trivy til at scanne images for kendte sårbarheder og opdater images rettidigt.
- Brug princippet om mindste rettigheder: Undgå at køre containere som root-bruger.
- Begræns containerressourcer: Brug cgroups til at begrænse containerens CPU- og hukommelsesforbrug.
- Opdater images regelmæssigt: Hold images opdaterede for at rette sikkerhedshuller.
- Brug sikkerhedsscanningsværktøjer: Værktøjer som Snyk, Clair osv. kan integreres i din CI/CD-proces for automatisk at scanne images for sårbarheder.





