リポジトリ

読む時間の目安: 2 分

Docker Hub リポジトリは、開発チーム、顧客、Docker コミュニティ全般に対してコンテナーの共有を可能にします。

Docker イメージは Docker Hub に対して docker push コマンドを使ってプッシュします。 1 つの Docker Hub リポジトリ内には複数の Docker イメージを含めることができます(タグを使って保存します)。

リポジトリの生成

リポジトリを生成するには Docker Hub にサインインして、Repositories をクリックし、さらに Create Repository をクリックします。

リポジトリの生成

リポジトリの新規生成時には以下を行います。

  • リポジトリを Docker ID 名前空間に含めるか、自身が 所有者 となっている 組織 に含めるかを選びます。
  • リポジトリ名は、これが属する名前空間内においてユニークである必要があります。 文字数は 2 文字以上 255 文字までです。 利用できる文字は、英小文字、数字、ハイフン(-)、アンダースコア(_)です。

    メモ

    Docker Hub のリポジトリを一度生成した後は、名称変更することはできません。

  • 内容説明を 100 文字以内で記述できます。 これは検索を行った際に、結果として表示されます。
  • この場ですぐに GitHub や Bitbucket のアカウントにリンクさせることができます。 またはリポジトリ設定において、後で行うこともできます。

リポジトリ生成の設定ページ

Create ボタンをクリックした後は、docker push を利用してこのリポジトリに対してイメージをプッシュしていくことができます。

リポジトリの削除

  1. Docker Hub にサインインして Repositories をクリックします。

  2. 一覧の中からリポジトリを 1 つ選択して、Settings をクリックし Delete Repository を行います。

メモ

リポジトリの削除を行うと、そこに含まれていたイメージやビルド設定はすべて失われます。 この操作は取り消すことはできません。

  1. 確認のためリポジトリ名を入力し、Delete をクリックします。

Docker コンテナーイメージの Docker Hub へのプッシュ

Docker Hub にイメージをプッシュするには、Docker Hub のユーザー名と、ウェブ画面を通じて Docker Hub 上に生成したリポジトリ名を使って、まずはローカルイメージに名前をつける必要があります。

リポジトリへは複数のイメージを追加することができます。 これにはイメージに対して、特定の:<tag>というものを加えます。 これが指定されていない場合、タグのデフォルト名はlatestになります。

ローカルイメージに名前をつけるには、以下の 3 つの方法の中から選びます。

  • イメージをビルドする際にdocker build -t <hub-user>/<repo-name>[:<tag>]を実行します。
  • ローカルイメージに改めてタグをつけるdocker tag <existing-image> <hub-user>/<repo-name>[:<tag>]を実行します。
  • docker commit <existing-container> <hub-user>/<repo-name>[:<tag>]を実行して変更をコミットします。

そこでこのリポジトリを、名前およびタグによって指定されるレジストリへプッシュします。

$ docker push <hub-user>/<repo-name>:<tag>

イメージがアップロードされて、チームメンバーやコミュニティが利用できるようになりました。

プライベートリポジトリ

プライベートリポジトリは、コンテナーイメージをプライベートなものにします。 これは自身のアカウントだけでなく、組織やチーム内においてもプライベートなものになります。

プライベートリポジトリを生成するには、リポジトリ生成の操作時に Private を選びます。

プライベートリポジトリの生成

Settings タブにおいては、既存のリポジトリをプライベートに変更することもできます。

リポジトリをプライベートに変更

Docker Hub ユーザーアカウントに対して、プライベートリポジトリは無償で 1 つだけ生成することができます。 (メンバーとして所属している組織からは利用できません。) ユーザーアカウントにおいて、これ以上のプライベートリポジトリを必要とする場合は、有料プランの情報 ページから Docker Hub プランをアップグレードすることが必要になります。

プライベートリポジトリが生成できたら、Docker を使ってイメージのpushpullを行うことができます。

メモ プライベートリポジトリにアクセスして操作を行っていくには、サインインしておくことが必要です。

メモ プライベートリポジトリは今のところ、トップレベルの検索、つまりdocker searchを利用した検索は利用できません。

プライベートリポジトリでは、協力者(collaborator)を設定して、リポジトリへのアクセスを管理することができます。 これはリポジトリの Settings ページから行います。 またリポジトリの状態は、利用可能なスロット数があれば、パブリックとプライベートの間で切り替えることもできます。 スロット数が足りない場合、Docker Hub プランをアップグレードすることができます。

協力者とその役割

協力者(collaborator)とは、プライベートリポジトリへのアクセスを許可する他ユーザーのことです。 これを設定すると、協力者もリポジトリに対してpushpullができるようになります。 ただし協力者になったからといって、リポジトリを削除したり、プライベートリポジトリをパブリックに変更したり、といった管理操作を行うことはできません。

メモ

協力者が他の協力者を追加することはできません。 管理操作が可能なのは、あくまでそのリポジトリの所有者のみです。

組織やチームを利用すれば、Docker Hub での協力者の権限は、さらに細かく割り当てることもできます(「Read」、「Write」、「Admin」)。 詳しくは 組織のドキュメント を参照してください。

リポジトリのタグ参照

Docker Hub の個々のリポジトリ画面では、利用可能なタグと、関連イメージのサイズが表示されます。 Repositories 画面にアクセスして、1 つのリポジトリをクリックし、タグを確認してください。

リポジトリ画面

リポジトリタグの参照

イメージサイズは、そのイメージと親イメージによって占有される合計サイズです。 これはまた、docker saveによりイメージを生成した際の.tarファイルのディスク容量でもあります。

個々のタグを確認するには Tags タブを開きます。

リポジトリタグの管理

イメージに対するプッシュ、プルの操作が 1 ヶ月以上なかったら、そのイメージは古いものとみなされます。 たとえば以下のようなものです。

  • 1 ヶ月以上、プル操作が行われていない。
  • 1 ヶ月以上、プッシュ操作が行われていない。

マルチアーキテクチャーのイメージの場合は、そのマニフェストにある一つずつのアーキテクチャーイメージがすべて古くなった場合に、古いものとみなされます。

タグを削除するには、対応するチェックボックスを選択して Action ドロップダウンリストから Delete を選択します。

メモ

リポジトリに対してタグの削除が可能なのは、管理者権限を持つユーザー(所有者まはた管理者権限を持つチームメンバー)のみです。

タグのダイジェスト値をクリックして、タグの詳細を確認します。

タグの確認

リポジトリの検索

Docker Hub レジストリに対しては、検索画面やコマンドラインインターフェースを利用して検索することができます。 検索では、イメージ名、ユーザー名、内容説明を使ってイメージを検索します。

$ docker search centos

NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                               The official build of CentOS.                   1034      [OK]
ansible/centos7-ansible              Ansible on Centos7                              43                   [OK]
tutum/centos                         Centos image with SSH access. For the root...   13                   [OK]
...

上の検索によると、検索結果としてcentosansible/centos7-ansibleという 2 つがあります。 2 つめの結果は、パブリックリポジトリにある、ユーザーansible/によるイメージを表わしています。 一方 1 つめであるcentosはリポジトリが表示されていません。 これは Docker 公式イメージ によるトップレベルの名前空間からきていることを表わします。 なお/は、ユーザーのリポジトリ名とイメージ名を区切るものです。

検索したいイメージが見つかったら、docker pull <イメージ名>を実行してダウンロードします。

$ docker pull centos

latest: Pulling from centos
6941bfcbbfca: Pull complete
41459f052977: Pull complete
fd44297e2ddb: Already exists
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:d601d3b928eb2954653c59e65862aabb31edefa868bd5148a41fa45004c12288
Status: Downloaded newer image for centos:latest

イメージが取得できたので、ここからコンテナーを実行することができます。

リポジトリへの星マークづけ

リポジトリは他の方から星マークをつけてもらうことがあり、逆に他のリポジトリへ星マークをつけることができます。 星マークをつけるのは、好きなリポジトリが何かを公開する方法として使えます。 またお気に入りのリポジトリをブックマークしておくということもできます。

Docker, docker, trusted, registry, accounts, plans, Dockerfile, Docker Hub, webhooks, docs, documentation