mercredi 7 juin 2023

Docker

Docker est un outil permettant de créer, déployer et exécuter des applications dans des conteneurs.


🧱 C'est quoi un conteneur ?

Un conteneur Docker est une unité légère et portable qui contient tout ce qu’il faut pour exécuter une application :

  • Le code

  • Les dépendances (bibliothèques, runtime, etc.)

  • La configuration

  • Le système d'exploitation minimal

Contrairement aux machines virtuelles, les conteneurs partagent le noyau de l’OS et sont donc beaucoup plus légers et rapides.


🔄 À quoi sert Docker ?

  • 🧪 Faire tourner une app localement comme en production

  • 📦 Emballer votre application pour un déploiement automatisé (CI/CD)

  • 🧩 Isoler les composants d'une architecture (ex : app + base de données)

  • 🌍 Exécuter la même app sur n’importe quel système


🛠 Exemple avec une application C# (.NET)

🎯 Objectif :

Conteneuriser une application console ou Web API C# avec Docker.


📁 Structure du projet :

/MonProjet
├── Program.cs
├── MonProjet.csproj
└── Dockerfile

🧪 Exemple simple : Web API .NET 8 (C#)

Program.cs

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello depuis Docker !");
app.Run();

🐳 Dockerfile

# Étape 1 : build
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY . ./
RUN dotnet publish -c Release -o out

# Étape 2 : runtime
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "MonProjet.dll"]

📦 Commandes Docker :

  1. Construire l’image :

docker build -t mon-projet-dotnet .
  1. Lancer le conteneur :

docker run -p 8080:80 mon-projet-dotnet
  1. Tester dans le navigateur :
    http://localhost:8080


⚠️ Remarques :

  • docker-compose.yml peut être utilisé pour gérer plusieurs services (ex : app + SQL Server).

  • Docker est idéal pour les microservices .NET.


📌 Résumé

Terme Description
Docker Outil de gestion de conteneurs
Image Docker Modèle d'un conteneur (comme une recette)
Conteneur Docker Instance d'une image en cours d'exécution
Dockerfile Script qui décrit comment construire l’image
docker build/run Commandes pour compiler et exécuter












Ok, on va clarifier ça bien : Docker et kubenet ne sont pas exactement la même chose ; l’un est pour les conteneurs, l’autre pour le réseau des pods dans Kubernetes. Voyons ça en détail.


1️⃣ Docker

Docker est une plateforme de conteneurisation.

  • Elle permet de mettre une application et toutes ses dépendances dans un “conteneur” isolé.

  • Un conteneur est léger et portable, contrairement à une machine virtuelle qui virtualise tout le système d’exploitation.

Exemple concret :

  • Tu as une application Python qui a besoin de Flask et numpy.

  • Avec Docker, tu crées un Dockerfile qui décrit l’environnement :

    FROM python:3.11 RUN pip install flask numpy COPY app.py /app/app.py CMD ["python", "/app/app.py"]
  • Puis tu crées une image Docker et tu l’exécutes partout exactement de la même façon.

Avantages Docker :

  • Isolation des applications

  • Portabilité entre machines

  • Déploiement rapide


2️⃣ kubenet

kubenet est un plugin réseau de Kubernetes.

Kubernetes orchestre des conteneurs (souvent Docker) en les groupant en pods. Chaque pod a besoin d’un réseau pour communiquer avec d’autres pods ou avec l’extérieur. C’est là qu’intervient kubenet.

Caractéristiques de kubenet :

  • C’est un plugin réseau simple intégré à Kubernetes.

  • Attribue des IP aux pods.

  • Permet aux pods de communiquer entre eux sur le même nœud.

  • Pour la communication entre nœuds, il utilise NAT (Network Address Translation).

Limite :

  • Pas aussi avancé que des plugins réseau comme Calico ou Cilium, surtout pour la sécurité et la communication inter-nœuds.


🔹 Résumé rapide

ConceptFonction principale
DockerCrée et exécute des conteneurs isolés
kubenetGère le réseau des pods dans Kubernetes

💡 En gros : Docker fait tourner les conteneurs, Kubernetes les orchestre, et kubenet s’assure que les pods peuvent se parler sur le réseau.


Aucun commentaire:

Enregistrer un commentaire

Docker Lượt xem: