2017-09-15 59 views
0

编辑:我相信这个问题只是相对于码头工人,我仍然给予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网络接口:

回答

0

绑定你的端口到指定的主机IP地址。相反的:

ports: 
    - 80:80 
    - 443:443 
    - 8888:8888 

用途:

ports: 
    - "192.168.1.12:80:80" 
    - "192.168.1.12:443:443" 
    - "192.168.1.12:8888:8888" 

这是使用的-p参数docker-run相同的语法。有关详细信息,请参见the documentation

(请注意,引用("...")是不是在这种情况下绝对必要的,但YAML有时会执行上不带引号的数字意想不到的转变,所以我只是默认情况下,引用的东西。)

+0

我试过,但现在给人的error:'time =“2017-09-15T14:00:43Z”level = error msg =“创建服务器时出错:listen tcp 192.168.1.12:80:bind:无法分配请求的地址”' – jbssm

+0

您确定地址' 192.168.1.12'分配给主机接口? – larsks

+0

是的。我已经看到至少在mac OS上存在一个突出的bug,虽然使用linux,但我不得不使用docker版本1.11.2,因此这可能是问题。 – jbssm

相关问题