Scalaでオレオレdocker-registryを実装してみた

だいぶ前からちょこちょこと作っていたんですが、ようやくイメージのpush、pullができるようになりました。

github.com

モノ自体はScalatraで作ったシンプルなWebアプリケーションで、以下のドキュメントに記載されているDockerのRegistry API V2を実装しています。

docs.docker.com

全てのAPIを実装しているわけではありませんし、色々と手を抜いている部分も多く、コード量は大したことありませんが、このドキュメントだけだとわからない点も多く、結局既存のdocker-registryのコードを調べて実装した部分もありました。docker-registryはAPIの構成自体は比較的シンプルなのですが、真面目に実装するとなると複数のバージョンのマニフェストをサポートしないといけなかったりと細かい部分が色々面倒そうです。

ちなみになんでわざわざこんなものを作っているのかというと、 現在GitBucketにはMavenリポジトリの機能を追加するプラグインが存在するのですが、同様にdocker-registryの機能を追加するプラグインを作りたいなと思っているためです(Scalatraで作っているのもそのため…)。