2017-09-15 12 views
0

EDIT :이 질문은 docker에만 관련이 있다고 생각합니다. 앞으로 누군가에게 도움이 될 수 있도록 traefik 세부 정보를 제공합니다. .두 개의 이더넷 포트가있는 호스트에서 docker가 특정 네트워크 인터페이스 (이름 또는 IP 기준)를 사용하도록 설정

두 개의 이더넷 포트가있는 시스템에서 traefik을 구성하려고합니다.

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 내가 외부에 포트 80을 노출 할 때문에 나는 용기를 시작할 때

, 나는 오류가 발생합니다. 1.11) 인터페이스.

80 포트가 사용되지 않는 eth1 (ip : 192.168.1.12) 인터페이스를 사용하여 도커 (및 traefik)를 어떻게 만들 수 있습니까?

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 네트워크 인터페이스를 만드는거야 : 특정에 포트 바인딩 docker create network proxy

답변

0

docker-compose.yml입니다 호스트 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" 

docker-run-p 인수로 사용하는 것과 동일한 구문입니다. 자세한 내용은 the documentation을 참조하십시오.

합니다 (인용 ("...")이이 경우에 반드시 필요하지 않습니다,하지만 난 그냥 기본적으로 물건을 인용 있도록 YAML 가끔 인용 부호가없는 숫자에 대한 예상치 못한 변환을 수행합니다.)

+0

을 나는 그것을 시도했지만 지금을 제공합니다 error :'time = "2017-09-15T14 : 00 : 43Z"level = 오류 msg = "서버 생성 중 오류 : 수신 TCP 192.168.1.12:80 : bind : 요청 된 주소를 할당 할 수 없음" – jbssm

+0

주소' 192.168.1.12'가 호스트 인터페이스에 할당 되었습니까? – larsks

+0

예. Mac OS에서이 문제에 관해서는 아직까지 눈에 띄지 않은 버그가있는 것을 보았습니다. Linux를 사용하기는했지만 docker 1.11.2 버전을 사용해야하므로 문제가 될 수 있습니다. – jbssm