基于path的多个容器和交换容器的一个主机
我用docker后端使用traefik 。 这里是我如何开始traefik:
$ cat docker-compose.yml version: '2' networks: default: external: name: proxy services: traefik: image: traefik command: --web --docker --docker.domain=docker --logLevel=WARNING container_name: traefik ports: - "80:80" - "8080:8080" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock - /dev/null:/traefik.toml labels: - "traefik.frontend.rule=Host:dashboard.docker" - "traefik.port=8080"
我想要2个容器,一个是dockerregistry ,第二个是registry的UI 。 我希望像registry.docker/v2/*
所有的HTTP请求通过registry容器,但任何其他请求( registry.docker/
registry.docker/repositories/20
,…)通过UI容器。
这是我试过的:
$ cat docker-compose.yml version: '2' networks: default: external: name: proxy services: registry: image: registry:2 container_name: registry environment: - REGISTRY_STORAGE_DELETE_ENABLED=true labels: - traefik.frontend.rule=Host:registry.docker, PathPrefix:/v2 - traefik.frontend.port=5000 registry-ui: image: konradkleine/docker-registry-frontend:v2 container_name: registry-ui environment: - ENV_DOCKER_REGISTRY_HOST=registry.docker - ENV_DOCKER_REGISTRY_PORT=80 - ENV_DOCKER_REGISTRY_USE_SSL=false labels: - traefik.frontend.rule=Host:registry.docker
但所有请求都通过registry
容器。 我应该改变什么?
我想你在这里有一个错字,根据我有的文件,这里是一个可能的解决scheme
尝试这个 :
version: '2' networks: default: external: name: proxy services: registry: image: registry:2 container_name: registry environment: - REGISTRY_STORAGE_DELETE_ENABLED=true labels: - traefik.frontend.rule: Host:registry.docker;PathPrefix:/v2 - traefik.frontend.port: 5000 registry-ui: image: konradkleine/docker-registry-frontend:v2 container_name: registry-ui environment: - ENV_DOCKER_REGISTRY_HOST=registry.docker - ENV_DOCKER_REGISTRY_PORT=80 - ENV_DOCKER_REGISTRY_USE_SSL=false labels: - traefik.frontend.rule: Host:registry.docker