吃枣药丸

吃枣药丸

[オープンソース]docker-tar: Docker Hubに直接接続できるDocker tarイメージダウンロードツール

イントロダクション#

docker-tar は、Docker リポジトリからイメージをプルし、自動的に Tar パッケージにパッケージ化するためのツールです。
Github: docker-tar

特徴#

  • Docker 環境不要:バイナリにすべての機能が含まれており、すぐに使用可能
  • 複数のオペレーティングシステムで動作:関連するバイナリを提供し、LinuxWindowsMacOSSolarisOpenBSD などのオペレーティングシステムで使用可能、さらにサポートされているオペレーティングシステムはリリースを参照
  • 複数のプロセッサアーキテクチャで動作:関連するバイナリを提供し、amd64/x64i386/x86armarm64mipsppc64 などのプロセッサアーキテクチャをサポート、PC やルーターを使用してこのツールを実行できます。さらにサポートされているアーキテクチャはリリースを参照
  • イメージモードのダウンロード:イメージサイトからダウンロードしたイメージ tar はタグを付ける必要がなく、入力したイメージ名と一致させることができます
  • ログインダウンロード:認証が必要な Docker リポジトリおよびそのイメージサイトをサポート
  • イメージアーキテクチャの選択:複数のアーキテクチャを持つ Docker イメージのダウンロードを選択することをサポート
  • Docker CLI に近いダウンロード結果:このツールでダウンロードした tar イメージファイルは、docker pulldocker save で保存したファイルと完全に一致します
  • ラボモード:DNS 汚染や SNI ブロッキングを解決するためのラボモードを提供し、アクセスできない Docker リポジトリサイトに直接接続するのを助けます

コマンドライン使用説明#

-action action
        pull: イメージ tar ファイルをプルします。
        list: プル可能なプロセッサアーキテクチャのイメージをリストします
  -arch architecture
        プルするイメージアーキテクチャを指定します (デフォルトは "amd64")
  -image name
        ダウンロードするイメージ情報
        バージョンを指定しない場合は最新がデフォルト
        デフォルトで DockerHub Docker リポジトリを使用
        nginx
        home-assistant/home-assistant:stable
        ghcr.io/home-assistant/home-assistant:stable
  -output filename
        出力する tar イメージのファイル名、指定しない場合はランダムに生成されます
   -username username
        Docker リポジトリ/イメージサイトにログインが必要な場合、ユーザー名を提供する必要があります
  -password password
        Docker リポジトリ/イメージサイトにログインが必要な場合、パスワードを提供する必要があります
  -mirror string
        イメージサイトを使用してイメージをダウンロードします
        この方法では -image で指定された名前は変更されません
  -lab
        ラボモード、これを有効にすると、デフォルトのパラメータを使用して DNS 汚染と SNI ブロッキングを回避します。pull list モードの両方で使用できます。
        通常、デフォルト設定で十分です
  -dns-servers ip list
        ラボモードが有効な場合、このオプションが有効になります。
        ツールにはリストが内蔵されており、入力内容は内蔵リストを上書きします。
        DNS サーバーの設定オプションで、解決された IP アドレスである必要があり、カンマで区切ります
  -dns-timeout int
         ラボモードが有効な場合、このオプションが有効になります。 
         DNS 競合のタイムアウト時間を設定します。 (デフォルト値 2s)
  -network network
        ラボモードが有効な場合、このオプションが有効になります。
        ip4: IPv4 のみを使用してイメージをダウンロード
        ip6: IPv6 のみを使用してイメージをダウンロード
        ip: IPv4 および IPv6 を使用してイメージをダウンロード (デフォルト値 "ip")

使用例#

対象イメージがサポートするアーキテクチャをリストする#

nginx がサポートするアーキテクチャを確認する

docker-tar -action list -image nginx

出力結果

利用可能なアーキテクチャ:
amd64
armv5
armv7
arm64v8
386
mips64le
ppc64le
s390x

イメージをダウンロードする(直接ダウンロード)#

この方法を使用するには HTTPS_PROXY 環境変数を設定する必要があります
nginx の armv7 アーキテクチャの nginx をダウンロード

docker-tar -action pull -image nginx -arch armv7 -output nginx.tar

出力結果

nginx:latest からプル中
[1/7]3d83c6df5858: ダウンロード中  100% |██████████████████████████████████████████████████| (24/24 MB, 1.9 MB/s)
[2/7]9260be83662e: ダウンロード中  100% |██████████████████████████████████████████████████| (37/37 MB, 2.0 MB/s)
[3/7]3058d76256fc: ダウンロード中  100% |██████████████████████████████████████████████████| (628/628 B, 986 kB/s)
[4/7]7888ef92f48d: ダウンロード中  100% |██████████████████████████████████████████████████| (956/956 B, 994 kB/s)
[5/7]5c27d4148f08: ダウンロード中  100% |██████████████████████████████████████████████████| (404/404 B, 400 kB/s)
[6/7]9c733a7e6553: ダウンロード中  100% |█████████████████████████████████████████████████| (1.2/1.2 kB, 1.5 MB/s)
[7/7]931fb3c7333d: ダウンロード中  100% |█████████████████████████████████████████████████| (1.4/1.4 kB, 2.5 MB/s)
出力ファイル:  nginx.tar

イメージをダウンロードする(イメージサイト経由)#

nginx の armv7 アーキテクチャの nginx をダウンロード

docker-tar -action pull -image nginx -arch armv7 -output nginx.tar -mirror docker.xuanyuan.me

出力結果

nginx:latest からプル中
[1/7]9c733a7e6553: ダウンロード中  100% |█████████████████████████████████████████████████| (1.2/1.2 kB, 1.0 MB/s)
[2/7]931fb3c7333d: ダウンロード中  100% |█████████████████████████████████████████████████| (1.4/1.4 kB, 2.8 MB/s)
[3/7]3d83c6df5858: ダウンロード中  100% |███████████████████████████████████████████████████| (24/24 MB, 3.6 MB/s)
[4/7]9260be83662e: ダウンロード中  100% |███████████████████████████████████████████████████| (37/37 MB, 5.2 MB/s)
[5/7]3058d76256fc: ダウンロード中  100% |███████████████████████████████████████████████████| (628/628 B, 68 kB/s)
[6/7]7888ef92f48d: ダウンロード中  100% |██████████████████████████████████████████████████| (956/956 B, 107 kB/s)
[7/7]5c27d4148f08: ダウンロード中  100% |███████████████████████████████████████████████████| (404/404 B, 35 kB/s)
出力ファイル:  nginx.tar

イメージをダウンロードする(ラボモードを使用して直接ダウンロード)#

nginx の armv7 アーキテクチャの nginx をダウンロード

docker-tar -action pull -image nginx -arch armv7 -output nginx.tar -lab

出力結果

nginx:latest からプル中
[1/7]3d83c6df5858: ダウンロード中  100% |███████████████████████████████████████████████████| (24/24 MB, 6.9 MB/s)
[2/7]9260be83662e: ダウンロード中  100% |████████████████████████████████████████████████████| (37/37 MB, 12 MB/s)
[3/7]3058d76256fc: ダウンロード中  100% |██████████████████████████████████████████████████| (628/628 B, 489 kB/s)
[4/7]7888ef92f48d: ダウンロード中  100% |██████████████████████████████████████████████████| (956/956 B, 671 kB/s)
[5/7]5c27d4148f08: ダウンロード中  100% |██████████████████████████████████████████████████| (404/404 B, 353 kB/s)
[6/7]9c733a7e6553: ダウンロード中  100% |█████████████████████████████████████████████████| (1.2/1.2 kB, 1.1 MB/s)
[7/7]931fb3c7333d: ダウンロード中  100% |█████████████████████████████████████████████████| (1.4/1.4 kB, 2.8 MB/s)
出力ファイル:  nginx.tar

TODO#

  • マルチレイヤーの同時ダウンロード
  • 分割ダウンロードのサポート、Range をサポートするレスポンスに対して分割ダウンロードを実装
  • Docker API の互換性(ContentType)
  • コード構造、命名の調整
  • より親しみやすいエラー出力

互換性状況(現在テスト済み)#

  • DockerHub
  • DockerHub イメージサイト
  • ghcr.io
  • ghcr.io イメージサイト
  • quay.io (現在 application/vnd.docker.distribution.manifest.v1+prettyjws に適合していません)
  • quay.io イメージサイト (現在 application/vnd.docker.distribution.manifest.v1+prettyjws に適合していません)

いくつかの役立つ情報#

リクエストフェーズサポートされる ContentTypeその他
トークン取得応答ボディのみ処理し、タイプを無視アクセストークン, ユーザー名とパスワード(必要な場合): Basic
すべてのアーキテクチャのイメージマニフェストインデックスを取得application/vnd.oci.image.index.v1+jsonこのタイプ以外の応答は直接終了します
指定されたアーキテクチャのイメージマニフェストを取得application/vnd.oci.image.manifest.v1+json互換性のあるタイプも可
イメージ設定を取得application/vnd.oci.image.config.v1+json互換性のあるタイプも可
レイヤーをダウンロードapplication/vnd.oci.image.layer.v1.tar
application/vnd.oci.image.layer.v1.tar+gzip
application/vnd.oci.image.layer.v1.tar+zstd
application/vnd.oci.image.layer.nondistributable.v1.tar
application/vnd.oci.image.layer.nondistributable.v1.tar+gzip
application/vnd.oci.image.layer.nondistributable.v1.tar+zstd
application/vnd.docker.image.rootfs.diff.tar
application/vnd.docker.image.rootfs.diff.tar.gzip
application/vnd.docker.image.rootfs.diff.tar.zstd
暗号化されたイメージはサポートされていません
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。