使用docker

时间:2019-07-24 04:53:28

标签: docker traefik

特拉菲克(Traefik)的Getting Started指南很难以任何逐步的方式进行。它具有以下问题:

  1. Getting Started建议将traefik作为命令运行,但是不能在traefik映像上运行命令,而必须使用traefik:alpine甚至将其封装到容器中与docker exec -it ...
  2. Getting Started几乎没有提及traefik.toml文件。
  3. #1使新读者对天气traefik感到困惑,后者打算作为容器运行,该容器会自动为每个新部署的容器(例如jwilder's nginx proxy)更新,或者是否打算在docker主机上运行。 >

原始docker-compose.yml文件如下所示:

version: '3' 

services:
  reverse-proxy:
    image: traefik # The official Traefik docker image
    command: --api --docker #--consul --consul.endpoint=127.0.0.1:8500 # Enables the web UI and tells Traefik to listen to docker
    ports:
      - "80:80"     # The HTTP port
      - "8080:8080" # The Web UI (enabled by --api)
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
  whoami:
    image: containous/whoami # A container that exposes an API to show its IP address
    labels:
      - "traefik.frontend.rule=Host:whoami.docker.localhost"

然后您可以通过以下方式运行它:

docker-compose up -d reverse-proxy

这很好,您可以在此处添加新服务,并指定新标签,例如上面的标签,即traefik.frontend.rule=Host:whoami-other.docker.localhost

您可以使用curl进行测试,并指定主机标题,如下所示:

curl -H Host:whoami.docker.localhost http://127.0.0.1

问题1)

第5行必须更改为使用图像traefik:alpine

    image: traefik:alpine # The official Traefik docker image

您现在可以实际docker exec这个容器。您只能在高山图片上使用sh(不能使用/bin/bash)。现在,我们可以执行以下操作:

docker exec -it traefik_reverse-proxy_1 sh
docker exec -it traefik_reverse-proxy_1 traefik --help

问题2)

从默认的docker-compose.yml开始,没有提到traefik.toml文件。即使我docker-compose up -d [some_new_service]并且可以访问这些服务,但对容器的炮击也没有traefik.toml文件。尽管容器中{strong> Basics的底部,它仍然无处,它表示查找其默认位置,例如/etc/traefik/$HOME/.traefik/和{{1} }或工作目录。这是指主机还是容器?在容器中,我运行. grep,仅看到二进制文件:

find

traefik是否将我的服务配置存储在内存中?

文档(Basics)中的下一个逻辑页面立即开始详细说明/ # find / | grep traefik /usr/local/bin/traefik 的配置,但是我必须尝试使用​​此类文件。

我不得不回到页面底部的Getting Started阅读中,发现当建议使用官方映像并像这样运行时,必须在卷中指定使用静态traefik.toml文件:

traefik.toml

因此,我将服务docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik 下原始volumes中的docker-compose.yml部分更改为使用类似的内容:

reverse-proxy

即使这样,我什至没有基本的volumes: - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events - $PWD/traefik.toml:/etc/traefik/traefik.toml 文件(examples folder of their GitHub中甚至没有一个文件)。我不得不去find one,但是甚至不确定它如何应用于我正在运行的服务的现有配置(即traefik.toml和/或whoami)。最后,在容器上运行whoami-other会在find / | grep traefik中显示相同的traefik.toml文件,但没有提及服务(我仍然可以通过docker的/etc/traefik/traefik.toml到达这些服务主办)。 那么配置在哪里?

1 个答案:

答案 0 :(得分:0)

在这里 https://raw.githubusercontent.com/containous/traefik/v2.0/traefik.sample.toml traefik文件在某种程度上使新手感到困惑(我是)。