「Docker Hub CLI Tool(hub-tool
コマンド)」を使うと,Docker Hub の情報取得を CLI で行えるようになる.2020年12月にリリースされて,2021年1月に OSS として GitHub リポジトリも公開された.個人的には「イメージタグを検索する hub-tool tag ls
コマンド」が便利すぎて頻繁に使っている.他には「レート制限の状況を確認する hub-tool account rate-limiting
コマンド」も便利!
なお Docker Blog の記事を読むと,hub-tool
コマンドの機能は将来的に Docker CLI に組み込まれる可能性があり,現時点ではフィードバックを集めるためにあくまで「実験用」としてリリースしているとのこと.詳しくは以下に載っている.
This does mean that this tool is going to be an experiment so we do expect it to go away sometime in 2021. We plan to use the lessons we learn here to make something awesome as part of the Docker CLI.
準備 1 : hub-tool
コマンドをインストールする 🧪
Docker Desktop のリリースノートにも載っている通り,Docker Desktop Community 3.0.0 からデフォルトで同梱されているため,Docker Desktop を使っていれば,特にインストールをしなくても hub-tool
コマンド v0.2.0
を使える.GitHub リポジトリを見ると,最新バージョンは v0.3.0
までリリースされている.今回はインストールされている v0.2.0
を使う.
- Docker for Windows release notes | Docker Documentation
- Docker for Mac release notes | Docker Documentation
$ hub-tool version Version: v0.2.0 Git commit: 0edf43ac9091e7cac892cbc4cbc6efbafb665aa4
準備 2 : ログインする(Two-Factor Authentication 対応)🧪
最初に hub-tool login
コマンドでログインをしておく.Docker Hub の「Two-Factor Authentication (2FA)」にも対応している.ただし 2FA を有効化している場合,hub-tool
コマンドを実行する度に OPT (One Time Password) の入力が求められるため,正直言って使いにくいと思う.関連する Issue も出ている.
# Two-Factor Authentication なし $ hub-tool login kakakakakku Password: Login Succeeded # Two-Factor Authentication あり $ hub-tool login kakakakakku Password: 2FA required, please provide the 6 digit code: 123456 Login Succeeded
準備 3 : 必要ならエイリアスを設定する 🧪
何となく hub-tool
という名前に違和感があり,GitHub 関連の hub
コマンドにも似ている.GitHub 関連だと,現在は gh
コマンドがよく使われていることもあり,個人的に dh
というエイリアスを設定して使っている.
$ alias dh=hub-tool
コマンド一覧 🧪
現状だと hub-tool
コマンドに関するドキュメントはなさそうで,hub-tool help
コマンドから使えるコマンドを整理した.
hub-tool account
info
rate-limiting
hub-tool help
hub-tool login
hub-tool logout
hub-tool org
ls
teams
members
hub-tool repo
ls
rm
hub-tool tag
ls
rm
inspect
hub-tool token
activate
create
deactivate
inspect
ls
rm
hub-tool version
$ hub-tool help 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.
hub-tool account
コマンド 🧪
hub-tool account info
コマンドを実行すると Docker Hub のアカウント情報を取得できる.hub-tool account rate-limiting
コマンドを実行すると「レート制限」の状況を確認できる.また --format json
オプションを使うと JSON 形式で結果を取得できるため,API 連携などをするときに便利!
$ hub-tool account info Username: kakakakakku Full name: kakakakakku Company: Tech Blogger Location: Tokyo Joined: 5 years ago Plan: free Limits: Seats: 1 Private repositories: 1 Parallel builds: 1 Collaborators: unlimited Teams: unlimited $ hub-tool account rate-limiting Limit: 200, 6 hours window Remaining: 200, 6 hours window $ hub-tool account info --format json $ hub-tool account rate-limiting --format json
hub-tool help
コマンド 🧪
コマンド一覧を確認するときに紹介したため割愛する.
hub-tool login
コマンド 🧪
準備 2 で紹介したため割愛する.
hub-tool logout
コマンド 🧪
hub-tool logout
コマンドを実行すると,ログアウトできる.ポイントは Docker Hub のウェブサイトではなく,あくまで hub-tool
コマンドとしてログアウトするところ.
$ hub-tool logout
Logout Succeeded
hub-tool org
コマンド 🧪
hub-tool org
コマンドを使うと,Docker Hub の Organizations や Teams の情報を取得できる.現在は Free プランで個人的に使っているため,取得できる情報がなかった.残念!
$ hub-tool org ls
$ hub-tool org teams my-org
$ hub-tool org members my-org
hub-tool repo
コマンド 🧪
hub-tool repo
コマンドを使うと,リポジトリ一覧を取得したり,リポジトリを削除できる.hub-tool repo ls
コマンドを iTerm2 で実行すると REPOSITORY の部分がリンク形式になっていて,直接ブラウザを開けるようになっている.細かい工夫もあって便利!
$ hub-tool repo ls REPOSITORY DESCRIPTION LAST UPDATE PULLS STARS PRIVATE kakakakakku/mysql-world-database Dockerized MySQL pre-loaded world database 🐳 42 hours ago 1244 0 false kakakakakku/cfn-lint Dockerized CloudFormation Linter (cfn-lint) 👮 2 weeks ago 1597 0 false kakakakakku/htmllint-cli Dockerized htmllint-cli ✏️ 3 months ago 993 0 false kakakakakku/apex Dockerized Apex 🐳 20 months ago 308 0 false kakakakakku/git Dockerized Git Command 🐙 20 months ago 15 0 false kakakakakku/rubocop Dockerized RuboCop 👮 21 months ago 1060 0 false kakakakakku/gin-example gin-example 2 years ago 24770 0 false kakakakakku/foodcritic Dockerized Foodcritic 🍕 2 years ago 975 0 false kakakakakku/docker-hands-on-nginx docker-hands-on-nginx 2 years ago 19 0 false kakakakakku/mkr Dockerized mkr 🐟 2 years ago 264 0 false kakakakakku/amazonlinux-bats Dockerized Bats for Amazon Linux 👾 2 years ago 33 0 false kakakakakku/mysql-56-world-database Deprecated : Use kakakakakku/mysql-world-database:5.6 3 years ago 27 0 false kakakakakku/mysql-57-world-database Deprecated : Use kakakakakku/mysql-world-database:5.7 3 years ago 433 0 false kakakakakku/httpd My sandbox : httpd 5 years ago 110 1 false kakakakakku/nginx My sandbox : nginx 5 years ago 68 1 false
hub-tool tag
コマンド 🧪
hub-tool tag
コマンドを使うと,指定したリポジトリのタグ一覧を取得したり,タグを削除したり,タグに紐付くイメージの詳細情報を取得できる.特に hub-tool tag ls
コマンドは便利で,Docker Hub に公開されているオフィシャルリポジトリも対象にできるため,例えば「nginx リポジトリのタグを調べたい」という場面で使える.今までは毎回 Docker Hub のウェブサイトを確認していた.
他にもオプションはある.--all
オプションを使えば,全タグを取得できるし,--platforms
オプションを使えば,対応しているプラットフォームも取得できるし,--sort
オプションを使えば,最終更新日とタグ名でソートもできる.
$ hub-tool tag ls kakakakakku/mysql-world-database TAG DIGEST STATUS LAST UPDATE LAST PUSHED LAST PULLED SIZE kakakakakku/mysql-world-database:latest sha256:872265c1d95ef7d501a63d2b6b185570173be3b658d3ea9f8b43c020bbc143cc active 42 hours ago 42 hours 13 minutes 154.7MB kakakakakku/mysql-world-database:5.7 sha256:98eb9d7f531ed1cbbe42c03ca08fd703d24f02117573d2c144d847f94d6b225d active 42 hours ago 42 hours 13 minutes 154.7MB kakakakakku/mysql-world-database:5.6 sha256:985fb7485de021a5fc8bd50b106b27b3f495d9f63e4245854118dd72eca32784 active 42 hours ago 42 hours 13 minutes 103.1MB kakakakakku/mysql-world-database:8.0 sha256:62db58969cd30fdd82617d8f6dcf35abb09a835b1d05007a0753591a855f26ae active 42 hours ago 42 hours 13 minutes 159.4MB kakakakakku/mysql-world-database:5.5 sha256:d100ead4d2eacf74ad110b5f1ad3d87e2e410d66a7f5da26b0b6af7ade585141 active 42 hours ago 42 hours 13 minutes 66.16MB $ hub-tool tag ls nginx TAG DIGEST STATUS LAST UPDATE LAST PUSHED LAST PULLED SIZE nginx:latest sha256:073effa4d56e0c870597a8e49c7effee02e27c9c65e93cdfcaea34e41615141d active 2 days ago 2 days 7 minutes 421.3MB nginx:stable-perl sha256:8176da19df2afbc068b9be824d11ff1482b5bdc6cd5cf7268f7e64c9c617e1c7 active 2 days ago 2 days 17 minutes 506.1MB nginx:stable sha256:b0e24622e0717d4453ae834cafc39aa8888fe9a55f9a362b13cc7035fa3f3344 active 2 days ago 2 days 11 minutes 421MB nginx:perl sha256:869af316fec24f6b347537a69e07850481b4fbfece958967c909b7b20831a57e active 2 days ago 2 days 6 minutes 506.4MB nginx:mainline-perl sha256:e311064b5b2d9af752ad4147a132ab16ac19874ecc2243ab98523d9f59b38f45 active 2 days ago 2 days 6 minutes 506.4MB nginx:mainline sha256:1a53eb723d17523512bd25c27299046cfa034cce309f4ed330c943a304513f59 active 2 days ago 2 days 7 minutes 421.3MB nginx:1.19.6-perl sha256:f998053942a5e45c6f5aa4e0516174727e3a2da7c76b8e3656a9173a692b4e88 active 2 days ago 2 days 6 minutes 506.4MB nginx:1.19.6 sha256:dd19f44b5a3c4b53947a10fe507afaa4f05e1b8ca64f95f33642d68c974d2b55 active 2 days ago 2 days 7 minutes 421.3MB nginx:1.19-perl sha256:869af316fec24f6b347537a69e07850481b4fbfece958967c909b7b20831a57e active 2 days ago 2 days 6 minutes 506.4MB (中略) 100/325 listed, use --all flag to show all $ hub-tool tag ls --platforms --sort name=desc nginx TAG DIGEST STATUS LAST UPDATE LAST PUSHED LAST PULLED SIZE OS/ARCH nginx:stable-perl sha256:8176da19df2afbc068b9be824d11ff1482b5bdc6cd5cf7268f7e64c9c617e1c7 active 2 days ago 2 days 22 minutes 506.1MB linux/ppc64le,linux/mips64le,linux/arm/v5,linux/arm64/v8,linux/s390x,linux/arm/v7,linux/amd64,linux/386 nginx:stable-alpine-perl sha256:0c85226446a083d92fbf432faee51d12933eafdcf13eb0b7d06fc465368ae908 active 7 weeks ago 7 weeks 34 minutes 124.8MB linux/amd64,linux/arm/v6,linux/s390x,linux/386,linux/arm/v7,linux/arm64/v8,linux/ppc64le nginx:stable-alpine sha256:da3716611fb965f3fda1f3281882baeb2760ca8bb7317f1d22ed45e75570827b active 7 weeks ago 7 weeks 7 minutes 64.99MB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/arm/v6,linux/s390x,linux/ppc64le,linux/386 (中略) 100/325 listed, use --all flag to show all
hub-tool tag inspect
コマンドは,v0.3.0
でプラットフォームを指定できるようになったり,出力結果も変更されているため,最新バージョンで使う方が良さそう.CLI でイメージの詳細情報を取得できるのは便利!
$ hub-tool tag inspect nginx
hub-tool token
コマンド 🧪
hub-tool token
コマンドを使うと,Docker Hub のアクセストークンを管理できる.アクセストークンを作ったり,一覧を取得したり,削除することもできる.
$ hub-tool token create --description sandbox1 Personal Access Token successfully created! (中略) $ hub-tool token create --description sandbox2 Personal Access Token successfully created! (中略) $ hub-tool token ls DESCRIPTION UUID LAST USED CREATED ACTIVE sandbox2 11111111-1111-1111-1111-111111111111 Never 20 seconds true sandbox1 22222222-2222-2222-2222-222222222222 Never 40 seconds true
hub-tool version
コマンド 🧪
準備 1 で紹介したため割愛する.
まとめ
「Docker Hub CLI Tool(hub-tool
コマンド)」を使うと,Docker Hub の情報取得を CLI で行えるようになる.特に hub-tool tag ls
コマンドは便利だと思う!Docker Blog の記事に載っている通り,あくまで「実験用」としてリリースされているとは言え,Docker Desktop にデフォルトで同梱されているし,使ってみてはいかがでしょうか!