編集:私はこの質問がドッカーに関連していると信じています。 。ドッカーが2つのイーサネットポートを持つホストで特定のネットワークインターフェイス(名前またはIPで)を使用するようにします
2つのイーサネットポートを持つマシンでtraefikを設定しようとしています。
私は外にポート80を露出させたいので、私はコンテナを起動しようとすると、私はエラーを取得:
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
しかし、80ポートがeth0の(IPでのみ使用されている:192.168。 1.11)インターフェース。
80ポートが使用されていないeth1(ip:192.168.1.12)インターフェイスを使用するにはどうしたらよいですか?
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
そして、私の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
そして私は単にproxy
ネットワークインターフェイスを作成しています:特定にごポートバインド
私はそれを試してみましたが、それは今与えますエラー: 'time =" 2017-09-15T14:00:43Z "level =エラーmsg ="サーバーの作成中にエラーが発生しました:listen TCP tcp 192.168.1.12:80:bind:要求されたアドレスを割り当てることができません " – jbssm
アドレス' 192.168.1.12はホストインタフェースに割り当てられていますか? – larsks
はい、そうです。私はMac OS上でこれについての未解決のバグがあることを知りました.Linuxを使用していましたが、私はドッカーバージョン1.11.2を使用することを余儀なくされました。 – jbssm