Zum Hauptinhalt springen
  1. Posts/

Interne Namensauflösung bei Docker mit Traefik

·466 Wörter·3 min
Sonstiges Docker Traefik
Christian
Autor
Christian
Macht was mit Computer 💻
Inhaltsverzeichnis

Traefik nutze ich primär um als reverse proxy von extern auf meine Docker Container zugreifen zu können. Dies natürlich SSL terminiert. Verschiedene Dienste sollen allerdings nicht extern erreichbar sein und benötigen auch – aus meiner Sicht – nicht zwingend eine verschlüsstele Verbindung.

Aus diesem Grund habe ich auf meinem internen Docker Server Traefik als reverse proxy laufen, welcher den verschiedenen Diensten via netzwerkinterner DNS-Auflösung ein DNS Namen verpasst. So kann ich z. B. via http://phpipam.docker.domain.local auf mein PHPIPAM Dienst zugreifen.

Voraussetzungen
#

  • Docker Host
  • Bereits eingerichtet Services (ich empfehle die Services intern immer erst mal rudimentär zu testen und dann zu erweitern)
  • internen DNS Server (ich nutze hier Windows DNS)

Auf meinem Windows DNS Server lege ich im DNS eine neue primäre Zone mit dem Namen „docker.domain.local“ (entsprechend an deine Bedürfnisse anpassen). Diese erhält dann einen einzigen A-Record der als Wildcard auf den Docker-Host zeigt.

![](data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 934 638'%3E%3C/svg%3E)
Screenshot aus dem Windows DNS
## Traefik einrichten

Um Traefik dann nutzen zu können, bediene ich mich zum Teil meiner vorhandenen Docker-Compose Sammlung auf Github. Den Traefik Container und die traefik.toml Datei wird dabei ein wenig angepasst.

traefik.toml:

<pre class="wp-block-code">```
 [log]   level = "DEBUG"  [providers]   [providers.docker]      exposedByDefault = false      endpoint = "unix:///var/run/docker.sock"      network = "traefik_proxy"  [entryPoints]   [entryPoints.web]     address = ":80"

docker-compose.yaml
```
 --- version: '3.3'  services:   traefik:     image: traefik:latest     container_name: traefik     volumes:       - /var/run/docker.sock:/var/run/docker.sock       - $PWD/config:/etc/traefik       - /etc/localtime:/etc/localtime     ports:       - "80:80"     restart: always     networks:       - default       - traefik_proxy  networks:   traefik_proxy:     external:       name: traefik_proxy   default:     driver: bridge
```
```

Anschließend lässt sich der Container starten und ist bereit um Container als reverse proxy anzubieten.

>
View this post on [Instagram](https://www.instagram.com/teqqyde/)
[Als kleiner Dank von den Damen und Herren bei Containous. 💜 Bei meinen Anleitungen und Docker Projekten nutze ich gerne #Traefik als Proxy.](https://www.instagram.com/p/B7gD9-cKzxD/?utm_source=ig_embed&utm_campaign=loading) > > A post shared by [ teqqyde | Server & Networking](https://www.instagram.com/teqqydeyt/?utm_source=ig_embed&utm_campaign=loading) (@teqqydeyt) on > >
Bei den anzubietenden Services müssen wir dann natürlich auch noch die Compose Datei anpassen. Beispielhaft hier meine zu phpIPAM:
<pre class="wp-block-code">```
---version: '3'services:  phpipam-mysql:    image: mysql:5.7    container_name: phpipam-mysql    restart: unless-stopped    volumes:      - $PWD/mysql:/var/lib/mysql    environment:      - MYSQL_ROOT_PASSWORD=ROOTPASSWORD  phpipam-phpipam:    image: pierrecdn/phpipam:latest    container_name: phpipam-phpipam    restart: unless-stopped    environment:      - MYSQL_ENV_MYSQL_USER=root      - MYSQL_ENV_MYSQL_ROOT_PASSWORD=ROOTPASSWORD      - MYSQL_ENV_MYSQL_HOST=phpipam-mysql    labels:      - "traefik.enable=true"      - "traefik.http.routers.phpipam-http.entrypoints=web"      - "traefik.http.routers.phpipam-http.rule=Host(`phpipam.docker.domain.local`)" #Domain anpassen      - "traefik.http.services.phpipam.loadbalancer.server.port=80"    depends_on:      - phpipam-mysql    networks:      - traefik_proxy      - default  networks:   traefik_proxy:     external:       name: traefik_proxy   default:     driver: bridge

Anschließend auch noch diese Compose Datei starten und nun lässt sich, wenn alles korrekt eingerichtet wurde, der Service als URL öffnen. So ist es wesentlich einfacherer als ich für jeden Service einen neuen Port überlegen zu müssen.

<figure class="kg-card kg-bookmark-card"><div class="kg-bookmark-content"><div class="kg-bookmark-title">🍻 Sag Danke</div><div class="kg-bookmark-description">Mit kleinen Gesten kannst du meine Arbeit wertschätzen. Was und wie du das tun kannst, erfährst du hier.</div><div class="kg-bookmark-metadata">![](data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 934 638'%3E%3C/svg%3E)<noscript>![](http://teqqy.de/favicon.png)</noscript><span class="kg-bookmark-author">teqqy.de</span><span class="kg-bookmark-publisher">Christian Birkenbeul</span></div></div><div class="kg-bookmark-thumbnail">![](data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 934 638'%3E%3C/svg%3E)<noscript>![](https://images.unsplash.com/photo-1502355984-b735cb2550ce?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDF8fHRoYW5rJTIweW91fGVufDB8fHx8MTYzNTg0NDA4MA&ixlib=rb-1.2.1&q=80&w=2000)</noscript></div></figure>

Verwandte Artikel

Docker-Compose Sammlung für dein Homelab
·313 Wörter·2 min
Sonstiges Docker Traefik
In meinen Videos verwende ich recht häufig Docker um Anwendungen zu installieren. Daher habe ich eine Docker-Compose Sammlung für Homelabs gestartet. Diese docker-compose.yaml Dateien sind von mir erstellt und/oder vorhandene editiert.
Reverse Proxy mit Traefik unter Docker
·556 Wörter·3 min
Sonstiges Selfhosted Docker Traefik
Achtung! Dieser Text ist schon über zwei Jahre alt und kann veraltet sein! Um mehrere Webseiten unter einer IP und einer Domain zu veröffentlichen, ist es am einfachsten, wenn man sich ein sogenannten reverse proxy einrichtet.
Docker Monitoring mit Prometheus und Grafana
·325 Wörter·2 min
Sonstiges Docker Monitoring
Um das Docker Monitoring sollte man sich nicht drücken, denn es ist wichtig zu sehen, welche Auslastung die einzelnen Container verursachen. Zum einen um etwaige Probleme festzustellen und zum anderen um die Leistung des Docker Hosts evtl.