Guia d'inici a Docker: Començar ràpidament a contenir la teva aplicació
Guia d'inici a Docker: Començar ràpidament a contenir la teva aplicació
Docker s'ha convertit en una part indispensable del desenvolupament i desplegament de programari modern. Tot i la gran quantitat de discussions al voltant de Kubernetes, Docker continua sent l'eina preferida per moltes empreses per construir, provar i desplegar aplicacions. Aquest article et guiarà ràpidament per començar amb Docker, entendre els seus conceptes bàsics i proporcionarà un exemple pràctic per ajudar-te a començar a contenir la teva aplicació.
Conceptes bàsics de Docker
Abans de començar a practicar, és essencial entendre alguns conceptes bàsics de Docker:
-
Imatge (Image): Una imatge és una plantilla de només lectura que conté tot el necessari per executar una aplicació: codi, entorn d'execució, eines del sistema, biblioteques i dependències. Similar a una imatge de màquina virtual, però més lleugera.
-
Contenidor (Container): Un contenidor és una instància en execució creada a partir d'una imatge. És una instància en temps d'execució d'una imatge, que conté l'aplicació i totes les seves dependències. Els contenidors estan aïllats entre si i tenen el seu propi sistema de fitxers, processos i espai de xarxa.
-
Docker Hub: Docker Hub és un registre d'imatges públic on pots descarregar imatges preconstruïdes o carregar les teves pròpies imatges. Similar a GitHub, però especialitzat en imatges de Docker.
-
Dockerfile: Un Dockerfile és un fitxer de text que conté totes les instruccions per construir una imatge de Docker. En escriure un Dockerfile, pots automatitzar el procés de creació d'imatges.
-
Docker Compose: Docker Compose és una eina per definir i executar aplicacions Docker de diversos contenidors. Et permet utilitzar fitxers YAML per configurar els serveis de l'aplicació i, a continuació, utilitzar una sola ordre per iniciar o aturar tots els serveis.
Instal·lació de Docker
Primer, has d'instal·lar Docker. Docker proporciona paquets d'instal·lació per a diversos sistemes operatius. Visita el lloc web oficial de Docker i segueix les instruccions corresponents per instal·lar-lo.
Un cop finalitzada la instal·lació, pots executar l'ordre docker --version per verificar si Docker s'ha instal·lat correctament.
Contenir una aplicació Python senzilla
Crearem una aplicació Python senzilla i l'utilitzarem Docker per contenir-la.
1. Crear l'aplicació Python
Crea un fitxer anomenat app.py que contingui el codi següent:
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')
Aquesta senzilla aplicació Flask retornarà "Hello, Docker!" a la ruta arrel /.
2. Crear el fitxer requirements.txt
L'aplicació depèn de la biblioteca Flask, hem de crear un fitxer requirements.txt per declarar aquestes dependències.
Flask
3. Crear el Dockerfile
Crea un fitxer anomenat Dockerfile i afegeix-hi el contingut següent:
# Utilitza la imatge oficial de Python com a imatge base
FROM python:3.9-slim-buster
# Estableix el directori de treball
WORKDIR /app
# Copia el fitxer requirements.txt al directori de treball
COPY requirements.txt .
# Instal·la les dependències
RUN pip install --no-cache-dir -r requirements.txt
```# Copieu el codi de l'aplicació al directori de treball
COPY app.py .
# Exposeu el port 5000
EXPOSE 5000
# Definiu l'ordre d'inici
CMD ["python", "app.py"]
Explicació del Dockerfile:
FROM python:3.9-slim-buster: Especifica la imatge base com a una versió reduïda de Python 3.9.WORKDIR /app: Estableix el directori de treball dins del contenidor a/app.COPY requirements.txt .: Copia el fitxerrequirements.txtdel directori actual al directori/appdel contenidor.RUN pip install --no-cache-dir -r requirements.txt: Executa l'ordrepipdins del contenidor per instal·lar les dependències especificades al fitxerrequirements.txt. El paràmetre--no-cache-dirpot reduir la mida de la imatge.COPY app.py .: Copia el fitxerapp.pydel directori actual al directori/appdel contenidor.EXPOSE 5000: Declara que el contenidor escoltarà al port 5000.CMD ["python", "app.py"]: Defineix l'ordre que s'executarà quan s'iniciï el contenidor.
4. Construïu la imatge Docker
Al directori que conté el Dockerfile, executeu l'ordre següent per construir la imatge Docker:
docker build -t my-python-app .
docker build: L'ordre per construir la imatge.-t my-python-app: Assigna un nom a la imatge (my-python-app)..: Especifica el directori on es troba el Dockerfile (el directori actual).
El procés de construcció pot trigar una mica, depenent de la velocitat de la xarxa i la mida de les dependències.
5. Executeu el contenidor Docker
Utilitzeu l'ordre següent per executar el contenidor Docker:
docker run -d -p 5000:5000 my-python-app
docker run: L'ordre per executar el contenidor.-d: Executa el contenidor en mode separat (s'executa en segon pla).-p 5000:5000: Assigna el port 5000 de l'amfitrió al port 5000 del contenidor.my-python-app: Especifica el nom de la imatge que s'utilitzarà.
6. Verifiqueu l'aplicació
Aneu a http://localhost:5000 en un navegador i hauríeu de veure "Hello, Docker!".
7. Atureu i suprimiu el contenidor
Utilitzeu l'ordre següent per aturar el contenidor:
docker stop
`` es pot veure mitjançant l'ordre docker ps.
Utilitzeu l'ordre següent per suprimir el contenidor:
docker rm
Introducció a Docker Compose
Si la vostra aplicació consta de diversos serveis, podeu utilitzar Docker Compose per gestionar-los.
1. Creeu un fitxer docker-compose.yml
Creeu un fitxer anomenat docker-compose.yml i afegiu-hi el contingut següent:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
Explicació de docker-compose.yml:* version: "3.9": Especifica la versió del fitxer Docker Compose.
services: Defineix els serveis de l'aplicació.web: Defineix un servei anomenat "web".image: my-python-app: Especifica la imatge que utilitza el servei.ports: Defineix el mapeig de ports.
2. Inicia l'aplicació
Al directori que conté el fitxer docker-compose.yml, executeu l'ordre següent per iniciar l'aplicació:
docker-compose up -d
docker-compose up: Ordre per iniciar l'aplicació.-d: Executa el contenidor en mode separat.
3. Atura l'aplicació
Utilitzeu l'ordre següent per aturar l'aplicació:
docker-compose down
Bones pràctiques de seguretat de Docker
Com es pot veure a la discussió, la seguretat de les imatges de Docker és un problema important. A continuació, es mostren algunes bones pràctiques de seguretat de Docker:
- Utilitzeu imatges oficials: Utilitzeu imatges proporcionades oficialment sempre que sigui possible, ja que normalment s'han sotmès a exploracions de seguretat i manteniment.
- Escaneja les vulnerabilitats de la imatge: Utilitzeu eines com Trivy per escanejar les vulnerabilitats conegudes a les imatges i actualitzeu les imatges de manera oportuna.
- Utilitzeu el principi de privilegis mínims: Eviteu executar contenidors com a usuari root.
- Limita els recursos del contenidor: Utilitzeu cgroups per limitar l'ús de CPU i memòria del contenidor.
- Actualitzeu les imatges periòdicament: Mantingueu les imatges actualitzades per solucionar les vulnerabilitats de seguretat.
- Utilitzeu eines d'escaneig de seguretat: Eines com Snyk, Clair, etc. es poden integrar al vostre procés CI/CD per escanejar automàticament les vulnerabilitats de la imatge.





