DockerのRegistryとPrivate registryについて

DockerのRegistryとPrivate registryについて整理し、Private registryの作成方法について書いてみました。
2021.07.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、クラスメソッドのキム・ジェウク(Kim Jaewook)と申します。今回はDockerのRegistryとPrivate registryについて話そうと思います。以前、Dockerについて書いたBlogもありますので、興味がある方はこちらのBlogも読んでください。

Docker Registryは何?

Registryは、様々なDocker Imageが保存されているスペースです。

RegistryでダウンロードしたDocker Imageは静的な状態ですので、コンテナ化して実行する必要があります。つまり、Registryとは、誰でもDocker Imageを作成して、pushすることができ、pushされたDocker Imageは他の人々に共有できるのがregistryだと考えたらいいと思います。

代表的にはDocker Hubがあります。このDockerHubには、自分が作成したDocker Imageをアップロードすることができますし、他の人たちがアップローダーどしたDocker Imageをダウンロードすることもできます。

Docker Private Registryは?

Docker HubにPrivate imageをアップロードするのは制限があります。 個人ユーザの場合、一つのイメージのみprivateが可能ですので、Organizationの場合は費用を支払わなければ使用できません。 こんな時に使用できるPrivate Registry環境があります。

つまり、自分だけのregistryを作成して、自分のサーバーで管理することができます。これが「Private Registry」です。

Private Registryを作成してみよう

まず、registryにpushをするためには、Docker Imageがひとつ必要です。

まず、runコマンドでリポジトリを作成します。

ここで、リポジトリの場合、もうひとつのサーバーを構築するのではなく、Docker Imageを入れて管理するスペースです。registryのポートは5000にして、コマンドの最後に「registry」を入れたらリポジトリが作成されます。

続いて、Linkにv2とapiバージョンを入れると、要請に応じた応答が出てきます。現在、リポジトリはapiを通じてpull、push通信を行っていますので、apiを使って管理できます。

次に、tagを修正しましょう。リポジトリに保存するためにリポジトリのポートを5000にします。

もともとは、ipやポートを入力する必要がありますが、「docker info」を見るとindexというものがあって、ここで「どのリポジトリに何が保存されているのか」すべて保存されていますので、Indexから勝手に要請して使用します。そのためipやポートを入力する必要はありません。

では、pushをして、リポジトリにDocker Imageをアップロードしましょう。

それでは、再びフルをするために、以前にあったDocker Imageをすべて削除しましょう。Docker Imageを削除すると、リポジトリを除く、すべてのDocker Imageが削除されます。

​そして、プルコマンドでダウンロードします。

最後にrunコマンドで、ダウンロードしたDocker Imageを実行させると、問題なく起動できます。

最後に

Private RegistryはDocker HubでいちいちDocker Imageを探したり、ダウンロードしたりする必要がなく、自分が使いたいDocker Imageを保存させ、いつでも使用できる便利さがあります。今回はこのPrivate Registryをどう作成して使うのかについて話しました。Dockerを勉強する方々に役に立ったらいいと思います。

参考