コマンドラインで “Docker Hub” にアップロード済みのDocker Repositoryを削除する方法

Bash,Docker,Zsh

はじめに

無料でDockerイメージを公開できるサービス Docker Hub はなくてはならないサービスですね。

昨年 自動ビルド機能が暗号通貨マイニングに悪用され廃止 となってしまったにもかかわらず、
無料でDockerイメージを公開するリポジトリとしての地位はゆるぎません。

"Github Action" なり "CircleCI" なり "GCP Cloud Build" なりを使ってビルドしたイメージを打ち上げる先として未だに使い続けています。

自分のPCでビルドしたイメージをアップロードするためにも利用していますが、不要になったDocker リポジトリを削除したいと思いました。

その際に実行した、コマンドラインから削除するための方法を紹介します。

検証環境

$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ bash -version | head -n 1
GNU bash, バージョン 5.1.16(1)-release (x86_64-apple-darwin21.1.0)

"Docker Hub" のDocker Repository を操作するためのツール "hub-tool"

"Docker Hub" のDocker Repository をコマンドラインから操作する場合は、 "hub-tool" というツールを利用します。

過去のエントリ (“hub-tool"を使って"Docker Hub"上のイメージタグを一覧表示する) でも紹介しました。

今回のエントリも、 hub-tool コマンドがすでにインストールされていることを前提とします。

インストールされていない場合は、インストールしておきましょう。

# インストールされているかを確認 ( メッセージが気持ち悪い )
$ hub-tool --version
Docker Hub Tool unknown, build unknown

hub-tool を使って "Docker Hub" 上の Docker Repository を削除

それでは hub-tool を使って、不要な Docker Repository を削除してみましょう。

hub-toolgit コマンドのように、サブコマンドを指定して使います。

# サブコマンド無しで実行し、ヘルプを表示させてみる
$ hub-tool
A tool to manage your Docker Hub images

Usage:
  hub-tool
  hub-tool [command]

Available Commands:
  account     Manage your account
  help        Help about any command
  login       Login to the Hub
  logout      Logout of the Hub
  org         Manage organizations
  repo        Manage repositories
  tag         Manage tags
  token       Manage Personal Access Tokens
  version     Version information about this tool

Flags:
  -h, --help      help for hub-tool
      --verbose   Print logs
      --version   Display the version of this tool

Use "hub-tool [command] --help" for more information about a command.

リポジトリを操作するためのサブコマンドは repo です。

# 引数を指定せずに repo サブコマンドを実行し、ヘルプを表示させてみる
$ hub-tool repo
Manage repositories

Usage:
  hub-tool repo
  hub-tool repo [command]

Available Commands:
  ls          List all the repositories from your account or an organization
  rm          Delete a repository

Flags:
  -h, --help   help for repo

Global Flags:
      --verbose   Print logs

Use "hub-tool repo [command] --help" for more information about a command.

hub-tool repo ls コマンドでDocker Repositoryを確認し、
hub-tool repo rm コマンドでDocker Repositoryを削除します。

$ hub-tool repo ls
REPOSITORY                            DESCRIPTION                                                                                        LAST UPDATE      PULLS    STARS    PRIVATE
genzouw/hello                                                                                                                            3 minutes ago    2        0        false
genzouw/centos-sandbox                                                                                                                   6 months ago     188      0        false
genzouw/ubuntu-sandbox                                                                                                                                    0        0        false
...

たくさん表示されましたが、ここでは genzouw/hello というDocker Repositoryを削除したいと思います。

# grep で絞り込んで確認
$ hub-tool repo ls | grep hello
hellogenzouw/hello                                                                                                                            3 minutes ago    2        0        false

削除を実行します。

$ hub-tool repo rm genzouw/hello
WARNING: You are about to permanently delete repository "genzouw/hello" including 1 tag(s)
         This action is irreversible
Enter the name of the repository to confirm deletion: genzouw/hello

削除前の確認として、「リポジトリ名を入力してね」と言われましたが面倒なので 強制削除オプションが無いか 確認してみます。

$ hub-tool repo rm --help
Delete a repository

Usage:
  hub-tool repo rm [OPTIONS] REPOSITORY

Flags:
  -f, --force   Force deletion of the repository
  -h, --help    help for rm

--force オプションがありましたので、こちらを付与しましょう。

$ hub-tool repo rm genzouw/hello --force
Deleted genzouw/hello

さようならDocker Repository。

削除されたか確認してみます。

$ hub-tool repo ls
REPOSITORY                            DESCRIPTION                                                                                        LAST UPDATE      PULLS    STARS    PRIVATE
genzouw/centos-sandbox                                                                                                                   6 months ago     188      0        false
genzouw/ubuntu-sandbox                                                                                                                                    0        0        false
genzouw/sqlite                                                                                                                           8 months ago     154      0        false
...

$ hub-tool repo ls | grep hello

ひとこと

まとめると、

  1. hub-tool ツールをインストール
  2. hub-tool repo rm --force <REPO_NAME> コマンドでリポジトリを削除 ( --force はお好みで )
  3. hub-tool repo ls コマンドでリポジトリを確認

という流れで削除できます。

Bash,Docker,Zsh