编辑:我相信这个问题只是相对于码头工人,我仍然给予traefik细节,以防万一它在未来帮助某人。使码头使用具有两个以太网端口的主机中的特定网络接口(通过名称或IP)
我试图在有两个以太网端口的机器上配置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)界面。
如何使docker(和traefik,如果需要)使用eth1(ip:192.168.1.12)接口,其中80端口未被使用?
这是我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
而且我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
网络接口:
我试过,但现在给人的error:'time =“2017-09-15T14:00:43Z”level = error msg =“创建服务器时出错:listen tcp 192.168.1.12:80:bind:无法分配请求的地址”' – jbssm
您确定地址' 192.168.1.12'分配给主机接口? – larsks
是的。我已经看到至少在mac OS上存在一个突出的bug,虽然使用linux,但我不得不使用docker版本1.11.2,因此这可能是问题。 – jbssm