Docker ミラー速度テストと設定ジェネレーター
Docker Registry V2 で実際の pull 可否を検証し、現在のネットワーク遅延順に並べてすぐ使える設定を生成します。
自分のミラーを一時的に追加
ホスト名のみ(ポート可)。保存はされず、1 回あたり最大 3 件です。内部ネットワークのスキャンに悪用されないよう、プライベートアドレスに解決されるホスト名は拒否します。
今回の無料テストではカスタムミラーを 3 件まで追加できます。17NAS への支援は Docker ツールの継続的な保守と改善に役立ちます。そのまま使えるミラー
これらのミラー自体は生きています。docker login が必要なもの、今まさに制限されているもの、当方の探測ノードを地域で制限しているものが含まれます。下の自動生成設定には入れませんが、あなたの回線では問題なく使える場合があります。
ホスト名が解決・接続できないか、接続はできてもマニフェストではなく Web ページを返すかのどちらかです。後者が厄介で、ブラウザでは普通に開くのに docker pull は必ず失敗します。黙って消さず、ここにそのまま残します。
設定の自動生成
/etc/docker/daemon.json
- 内容を次のファイルに書き込む:
/etc/docker/daemon.json - Docker サービスを再起動:
sudo systemctl restart docker - 反映を確認:
docker info | grep -i registry
- ディレクトリを作成:
sudo mkdir -p /etc/containerd/certs.d/docker.io - 上記の内容をそのディレクトリ内の次の名前で保存:
hosts.toml - containerd を再起動:
sudo systemctl restart containerd
パネルが「1 行に 1 つのミラーアドレス」という形式を受け付ける場合は、上の 1Panel / DPanel タブに切り替え、このテストで生成された一覧をコピーしてください。
検査は 2 系統に分かれます。プロトコル検証は 17NAS の探測ノードで行います。まず /v2/ を要求し、401 + WWW-Authenticate: Bearer が返れば Docker 標準の手順で匿名トークンを取得、そのトークンで library/alpine:latest のマニフェストを取得し、最後に応答が本当にマニフェストか(Docker-Content-Digest ヘッダーとメディアタイプで判定)を確認します。遅延はあなたのブラウザが各 /v2/ を 3 回叩いて中央値を取ります。これが実際に体感する速度なので、並び順とおすすめはこちらに従います。
6 つのステータスの意味
- そのまま使える:匿名で実際のマニフェストを取得できました。設定に入れるだけです。
- ログインが必要:ミラー自体は生きていますが、先に
docker loginが要ります。クラウド事業者の専用ミラーはほぼこれです。 - レート制限中:短時間に要求が多く弾かれました(HTTP 429)。一時的なので時間をおけば通ることが多いです。
- アクセス制限:ミラーが当方の探測ノードを明確に拒否しました(HTTP 403)。学内網・社内網・地域限定のミラーによくあり、該当ネットワークからなら正常に使えることがあります。
- レジストリではない:接続はできますが、Web ページを返す・イメージが無い・不審なリダイレクトをする、のいずれかです。HTTP ステータスコードしか見ないツールはこれを「利用可」と判定しがちで、
daemon.jsonに入れるとdocker pullは必ず失敗します。 - 接続不可:ホスト名の DNS レコードが無い、または接続・TLS ハンドシェイクに失敗します。公開ミラーは終了時に DNS ごと止めることが多いので、このグループはブックマークから削って構いません。
ログインが必要なミラーの設定
まず docker login <ミラーのホスト名> で提供元の資格情報を入力します。認証情報は ~/.docker/config.json に保存されるので、そのうえでホスト名を registry-mirrors に手動で追加してください。このファイル内の資格情報は base64 エンコードされているだけで暗号化ではありません。バックアップごと公開リポジトリに上げないよう注意してください。
docker pull の実効帯域とは別物です。