EDIT: Ich glaube, diese Frage ist nur relativ zu Docker, noch gebe ich die Traefik Details nur für den Fall, dass es jemand in der Zukunft hilft .Machen Sie Docker verwenden bestimmte Netzwerkschnittstelle (Name oder IP) in einem Host mit zwei Ethernet-Ports
Ich versuche Traefik in einer Maschine mit zwei Ethernet-Ports zu konfigurieren.
Da ich Port 80 nach außen verfügbar machen möchten, erhalte ich einen Fehler, wenn ich versuche, den Behälter zu starten:
ERROR: for traefik_traefik_1 Cannot start service traefik: driver failed programming external connectivity on endpoint traefik_traefik_1 (68247b1a5d9c26bfb0a139747f210140c4cf4a34d9125b2cc2fb5d968c85a89b): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
Aber der 80-Anschluss ist nur bei der Verwendung im eth0 (ip: 192.168. 1.11) Schnittstelle.
Wie mache ich Docker (und Traefik wenn nötig) verwenden Sie die eth1 (IP: 192.168.1.12) Schnittstelle, wo der 80 Port nicht verwendet wird?
Das ist mein docker-compose.yml
:
version: "2"
services:
traefik:
image: traefik
networks:
- proxy
ports:
- 80:80
- 443:443
- 8888:8888
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${SERVER_DIR}/docker/traefik:/etc/traefik/
- ${PWD}/acme.json:/acme.json
- ${PWD}/traefik.toml:/traefik.toml
- ${PWD}/servers.toml:/servers.toml
restart: never
networks:
proxy:
external: true
Und mein traefik.toml
:
logLevel = "ERROR"
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = "192.168.1.12:80"
compress = false
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = "192.168.1.12:443"
[entryPoints.https.tls]
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
#onDemand = true
[[acme.domains]]
main = "mydomain.net"
[web]
address = "192.168.1.12:8888"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mydomain.net"
watch = true
exposedbydefault = false
Und ich bin der Erstellung der proxy
Netzwerk-Schnittstelle einfach mit:
versuchte ich das, aber es gibt jetzt die Fehler: 'time =" 2017-09-15T14: 00: 43Z "level = error msg =" Fehler beim Erstellen des Servers: hoeren tcp 192.168.1.12:80: bind: kann die angeforderte Adresse nicht zuweisen "' – jbssm
Sind Sie sicher, dass die Adresse ' 192.168.1.12' ist einer Host-Schnittstelle zugeordnet? – larsks
Ja ist es. Ich habe gesehen, dass es zumindest auf Mac OS einen überragenden Bug gibt, und obwohl ich Linux benutze, bin ich gezwungen, docker Version 1.11.2 zu benutzen, also könnte das hier das Problem sein. – jbssm