Traefik 的入门指南很难以任何一步一步的方式遵循。它存在以下问题:
traefik
建议作为命令运行,但不能在traefik
映像上运行任何命令,您必须使用traefik:alpine
,甚至使用 Shell 进入容器docker exec -it ...
。traefik.toml
。他们的原始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"
Run Code Online (Sandbox Code Playgroud)
然后你可以使用以下命令运行它:
docker-compose up -d reverse-proxy
Run Code Online (Sandbox Code Playgroud)
这很好,您可以在此处添加新服务并指定新标签,如上面的标签,即traefik.frontend.rule=Host:whoami-other.docker.localhost
.
您可以使用curl 进行测试,指定主机标题,如下所示:
curl -H Host:whoami.docker.localhost http://127.0.0.1
Run Code Online (Sandbox Code Playgroud)
问题1)
必须更改第 5 行才能使用该图像traefik:alpine
。
image: traefik:alpine # The official Traefik docker image
Run Code Online (Sandbox Code Playgroud)
现在你实际上可以使用docker exec
这个容器了。您只能在高山图像上使用sh
(不能使用 )。/bin/bash
我们现在可以执行以下操作:
docker exec -it traefik_reverse-proxy_1 sh
docker exec -it traefik_reverse-proxy_1 traefik --help
Run Code Online (Sandbox Code Playgroud)
问题2)
默认情况下docker-compose.yml
,没有提及文件traefik.toml
。即使我docker-compose up -d [some_new_service]
可以访问这些服务,脱壳到容器中也没有traefik.toml
文件。它不在容器中的任何地方,尽管根据Basics的底部,它说寻找它的默认位置,例如/etc/traefik/
和$HOME/.traefik/
和.
或工作目录。这是指主机还是容器?在我运行的容器中grep
find
,只看到二进制文件:
/ # find / | grep traefik
/usr/local/bin/traefik
Run Code Online (Sandbox Code Playgroud)
traefik 是否将我的服务配置存储在内存中?
文档中的下一个逻辑页面(基础知识)立即开始详细配置traefik.toml
,但我必须对这样的文件进行试验。
我不得不回到该页面底部的“入门”阅读,发现traefik.toml
当他们建议使用官方映像并像这样运行时,必须在卷中指定使用静态文件:
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik
Run Code Online (Sandbox Code Playgroud)
因此,我将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
Run Code Online (Sandbox Code Playgroud)
即使这样,我也没有可用的基本文件(他们的 GitHub 的示例文件夹traefik.toml
中甚至没有)。我必须去找一个,但甚至不确定它将如何应用于我正在运行的服务的现有配置(即和/或)。最后,在容器上运行会显示中的相同文件,但它没有提及服务(我仍然可以从我的 docker 主机访问该服务)。那么配置在哪里呢?whoami
whoami-other
find / | grep traefik
traefik.toml
/etc/traefik/traefik.toml
curl -H Host:whoami.docker.localhost http://127.0.0.1
小智 0
它在这里 https://raw.githubusercontent.com/containous/traefik/v2.0/traefik.sample.toml 不知何故,traefik 文档对新手来说很混乱(我是)。
归档时间: |
|
查看次数: |
7497 次 |
最近记录: |