Dockerのプライベートレジストリをウェブから見れるようにするdocker-registry-frontendを導入した際に発生した問題のトラブルシューティングです。
ENV_DOCKER_REGISTRY_HOSTにはlocahostは指定できない
考えてみれば当たり前なんですが一度やってしまいました。
ENV_DOCKER_REGISTRY_HOSTはDockerコンテナ内からレジストリにアクセスできるホスト名を指定する必要があります。
僕は面倒なのでレジストリを起動しているDockerホストのIPを直に指定しました。
リバースプロキシからフロントエンドに繋げるときはサブディレクトリを指定しない
http://example.com/docker-frontend/ でアクセスできるようにしようとか最初考えると思いますが動きません。
面倒ですがサブドメインを作るなどしてルートのパスからフロントエンドにアクセスできるようにしないと動作しません。(2015/03/03現在)
原因
Dockerコンテナ自身がレジストリへのプロキシとなることでAjaxでAPIにアクセスしているみたいなのですが、このときにサブディレクトリを考慮していないため、http://example.com/docker-frontend/v1/search というパスでアクセスすべきところを http://example.com/v1/search でアクセスしてしまっているためです。
GitHubのIssueで同じように悩んでいる方がいるのですが、英語できないので教えてあげられない。。。
追記: 頑張って投稿してみた。意味わかんねぇとか言われたらどうしよう。。。