LoginSignup
2
2

More than 5 years have passed since last update.

Docker のプライベートリポジトリを v2 にお引越し

Posted at

以前 「自分用の Docker Registry を作る」 という記事で、自分用のプライベートリポジトリを作成し、長らく便利に使っていました。
Docker の registry コンテナも V2.0 になって久しく、push/pull の度に「v1 api は古いよ!」と余計なおせっかいを焼いてくる始末。
そろそろ V2 に移行しようかといった作業時のメモです。

記載時点(Feb.07.2016) での情報となります。

問題点

Docker イメージとして提供されている registry (v1) と registry:2 (v2) の間にデータの互換性はなく、リポジトリデータを永続化していてもそれを流用することができません。

なので、旧リポジトリのデータをバックアップし、真っ新な v2 のリポジトリを作ったうえで再登録するといったお引っ越し作業が必要になります。

手順

更新するプライベートリポジトリサーバーとは別に、イメージをいったん全部対比させる Docker ホストを 1つ用意します。
全イメージをコピーする先ですのでストレージの空き容量にご注意ください。

  1. リポジトリ上のイメージ名一覧を取得
  2. 退避先 Docker ホストで全 image を 1つずつ pull
  3. プライベートリポジトリを v2 に更新
  4. 退避先 Docker ホストから全 image を 1つずつ push

なんのことはないこれだけの地味な作業です。

v2 リポジトリを新サーバーとして刷新した場合、マシン名(URL)が異なると「そのままpushするだけ」ができなくなりますのでご注意ください。

注意点

全イメージ名の取得法

registry API の search でイメージ名を取得しても良いのですが、ボリュームで永続化している場合は 'repository/library/' 以下のイメージディレクトリ名を一覧として使えます。

registry v2 の永続化

v1 の時は registry 内のディレクトリポイント /tmp/registry をボリュームにすることで永続化をしていました。
v2 で同様にするためのディレクトリポイントは /var/lib/registry になります。

早期では /tmp/registry-dev だった事があるらしく、WEBを検索すると引っかかりますが。現在は /var/lib/registry となっているようです。
参照: https://docs.docker.com/registry/deploying/

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2