Docker Traefik Grundlagen
Version vom 20. Februar 2023, 07:45 Uhr von Mario.zimmermann (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Was ist Traefik= Traefik ist ein Reverseproxy der Anfragen von Clients entgegen nimmt und sie an die Container weitergibt. Traefik kann auch als TLS Endpunkt…“)
Was ist Traefik
Traefik ist ein Reverseproxy der Anfragen von Clients entgegen nimmt und sie an die Container weitergibt. Traefik kann auch als TLS Endpunkt dienen und die Beschaffung von Zertifikaten verwalten.
Traefik läuft auch in einem Docker Container.
Port handling
Beim "normalen" Docker ohne Traefik wird die Unterscheidung welcher Container "angefahren" wird, anhand des Ports getroffen (ISO/OSI Schicht 4). Das ist sehr unschön und in der Praxis untauglich.
- Docker ohne Traefik
Wenn man traefik benutzt, erfolgt die Selektion mit welchem Container kommnuiziert wird, anhand des Domainnamens. Dies erfolgt in der Applikationsschicht (ISO/OSI Schicht 4).
- Docker mit Traefik
Wir erstellen zu erst ein Traefik Netz
- docker network create traefik-public
Einfaches Beispiel
version: "3.3" networks: traefik-public: external: true services: traefik: image: "traefik:v2.4" container_name: "traefik" command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.myresolver.acme.httpchallenge=true" - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.myresolver.acme.email=wombel@linugs.de" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - "8080:8080" volumes: - "./letsencrypt:/letsencrypt" - "/var/run/docker.sock:/var/run/docker.sock:ro" networks: - traefik-public labels: - "traefik.enable=true" - "traefik.loadbalancer.server.port=8080" - "traefik.http.routers.mytraefik.rule=Host(`traefik.linugs.de`)" - "traefik.http.routers.mytraefik.tls.certresolver=myresolver" - "traefik.http.routers.mytraefik.entrypoints=websecure" - "traefik.http.routers.mytraefik.service=api@internal" ~
Traefik kann nun Anfragen entgegen nehmen und an die Container weiterleiten.