docker pullがリセットされる問題を解決する

docker pullがリセットされる問題を解決する

この記事では、docker pull がリセットされる問題を解決する方法を紹介し、皆さんと共有します。詳細は次のとおりです。

例えば:

$ docker pull ubuntu:16.04
リポジトリ docker.io/library/ubuntu をプルしようとしています... 
https://registry-1.docker.io/v2/library/ubuntu/manifests/sha256:dd7808d8792c9841d0b460122f1acf0a2dd1f56404f8d1e56298048885e45535 を取得: https://auth.docker.io/token?scope=repository%3Alibrary%2Fubuntu%3Apull&service=registry.docker.io を取得: tcp *.*.*.*:41348->50.17.62.194:443 を読み取り: ピアによって接続がリセットされました

原因: 50.17.62.194 が TCP によってリセットされたようです。

解決:

1. 利用可能な IP を見つける:

$ dig auth.docker.io
 
; <<>> DiG 9.10.4-P6-RedHat-9.10.4-4.P6.fc25 <<>> auth.docker.io
;; グローバルオプション: +cmd
;; 回答が得られました:
;; ->>HEADER<<- オペコード: QUERY、ステータス: NOERROR、ID: 7119
;; フラグ: qr rd ra; クエリ: 1、回答: 3、権限: 0、追加: 1
 
;; OPT擬似セクション:
; EDNS: バージョン: 0、フラグ:; udp: 4096
;; 質問セクション:
;auth.docker.io. IN A
 
;; 回答セクション:
auth.docker.io. 60 IN A 34.193.147.40
auth.docker.io. 60 IN A 50.17.62.194
auth.docker.io. 60 IN A 52.5.246.212
 
;; クエリ時間: 130 ミリ秒
;; サーバー: *.*.*.*#53(.*.*.*.*)
;; 日時: 2017 年 3 月 7 日火曜日 11:03:29 CST
;; 受信したメッセージサイズ: 91

2. /etc/hosts を変更して、docker.io 関連のドメイン名を他の利用可能な IP に解決するように強制します。

# /etc/ホスト
34.193.147.40 レジストリ-1.docker.io auth.docker.io

ちなみに、画像の説明と現在利用可能な画像プロバイダーを添付してください

まず、1 つの質問を明確にする必要があります。ミラー レジストリとプライベート レジストリの違いは何ですか?

daocloudからコピーした説明:

両者の間には本質的な違いがあります。

プライベート レジストリは、開発者または企業によって構築されたイメージ リポジトリです。通常は、企業内で Docker イメージを保存するために使用され、社内の開発プロセスや製品のリリースおよびバージョン管理に使用されます。ミラーはプロキシトランジットサービスです。当社(daocloud を参照)が提供するミラーサービスは、Docker Hub の公式レジストリに直接接続します。 Docker Hub にはさまざまな種類の Docker イメージが数十万個あります。 プライベート レジストリを使用する場合、Docker Pull または Dockerfile にプライベート レジストリのアドレスを直接入力する必要がありますが、通常、これによりプライベート レジストリとのバインドが発生し、柔軟性が欠如します。 Mirror サービスを使用するには、Docker デーモン構成ファイルに Mirror パラメータを追加するだけで、公式 Docker Hub にグローバルに透過的にアクセスでき、Dockerfile イメージ参照のソースを変更する必要がなくなります。

簡単に言えば、ミラーは CDN に似ており、その本質は公式キャッシュです。プライベート レジストリはプライベート サーバーに似ており、公式とは何の関係もありません。私の場合、docker hub にイメージをドラッグしたいので、対応するものは Mirror です。 yum/apt のミラーは少し異なります。実際には、公式ライブラリ ファイル全体をミラーとして独自のサーバーにドラッグし (有用かどうかに関係なく)、公式サーバーと定期的に同期します。Docker ミラーは、使用されたイメージのみをキャッシュします。

現在、中国では docker hub にアクセスするのが非常に難しいため、docker mirror を使用することが必須です。現在サービスを提供しているのは、ustc、daocloud、aliyunの3社です。以下で順に紹介していきます。

選択肢ゼロ: NetEase 163 Docker イメージ

$ sudo echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker
$ サービスdockerを再起動します

一般的に言えば、NetEase の豚肉は市販の豚肉よりも美味しいです。

オプション 1: ustc ミラー

ustc は、長年にわたり利用されてきた Linux ミラー サービス プロバイダーであり、Ubuntu 5.04 バージョンから使用されています。以前のブログで、ustc docker リポジトリ イメージを使用できることを説明しました。使用方法については、ustc docker イメージの使用ヘルプを参照してください。

ustc の docker イメージは速度が速く、使用していて満足しています。しかし、今日はそれが機能しないことがわかりました。おそらくこの事件に関連しているのでしょう。今日、Ubuntu をプルしようとしましたが、非常に遅かったです。Docker Hub から直接プルする必要があり、基本的に加速効果はありませんでした。

ustc docker ミラーの利点の 1 つは、登録が不要でパブリック サービスであることです (これは私がよく知っている ustc です)。

オプション2: daocloud

DaoCloud も Docker アクセラレータを提供していますが、ustc とは異なり、ユーザーは使用前に登録する必要があり、トラフィックは月あたり 10 GB に制限されています。 Linux での使用は比較的簡単で、1 つのコマンドで実行できます。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://{your_id}.m.daocloud.io

実際の変更は /usr/lib/systemd/system/docker.service で、–registry-mirror パラメータが追加されます。

ExecStart=/usr/bin/docker-current デーモン --registry-mirror=http://{your_id}.m.daocloud.io\

設定後、設定を再読み込みして再起動する必要があります。

systemctl docker を有効にする; systemctl daemon-reload; systemctl docker を再起動する

しかし!今日、DaoCloud の Docker アクセラレータを使用して非常に悪い経験をしました。加速効果をほとんど感じることができなかったので、断固として諦めました。

オプション3: alicloud

Alibaba Cloud も Docker アクセラレータを提供していますが、ustc よりも面倒です。Alibaba Cloud ユーザーとして登録するだけでなく、開発者プラットフォームに参加する必要があります。しかし、昨晩これらすべてを終えた後、私はサービスが非常に良好で、プル速度が基本的に 1MB/秒であることに気づきました (私が杭州にいることも一因です)。設定方法はdaocloudと同様で、アクセラレータを起動するとURLが付与されます。

/usr/lib/systemd/system/docker.service を直接変更しました:

ExecStart=/usr/bin/docker-currentデーモン --registry-mirror=https://{your_id}.mirror.aliyuncs.com\

設定を再読み込みして再起動します:

systemctl docker を有効にする; systemctl daemon-reload; systemctl docker を再起動する

pull すると、やはり docker.io が表示されますが、速度が全く docker.io になりません。

# docker pull ubuntu
デフォルトタグの使用: 最新
リポジトリ docker.io/library/ubuntu をプルしようとしています...
最新: docker.io/library/ubuntu からプル
cad964aed91d: プル完了
3a80a22fea63: プル完了
50de990d7957: プル完了
61e032b8f2cb: プル完了
9f03ce1741bf: プル完了
ダイジェスト: sha256:28d4c5234db8d5a634d5e621c363d900f8f241240ee0a6a978784c978fe9c737
ステータス: docker.io/ubuntu:latest の新しいイメージをダウンロードしました

まとめると、aliyun docker mirror には多少の不便さはあるものの、確かに現時点では最高のサービスです。もちろん、USTC が正常に戻ったら、USTC に切り替えます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • docker によってプルされたイメージがどこに保存されるかの詳細な説明
  • Docker イメージのプルとタグ操作 pull | tag
  • Docker 構成 Alibaba Cloud イメージアクセラレーション プル実装
  • docker によってプルされたイメージがどこに保存されるかの詳細な説明
  • docker イメージのプル速度が遅い問題の解決策
  • docker イメージのプル速度が遅い問題を解決する方法
  • docker によってプルされたイメージファイルが保存される場所の詳細な説明
  • docker pullイメージソースを変更する方法の詳細な説明
  • Docker プルタイムアウトの解決策

<<:  MAC 上の MySQL の初期パスワードを忘れた場合の対処方法

>>:  vue3 watch と watchEffect の使い方と違い

推薦する

JavaScript を使用してテーブル情報を追加および削除する

JavaScript 入門JavaScript は軽量なインタープリタ型の Web 開発言語です。言...

MySQL 5.7 解凍版のインストールとアンインストール、およびよくある問題の概要

1. インストール1. ダウンロードMySQLをダウンロードするには、MySQL公式サイトhttp:...

フレックスレイアウトが子要素によって引き伸ばされたときに、コンテンツをコンテナ内に保持する方法

モバイル デバイスでは、フレックス レイアウトが非常に便利です。デバイスの幅に応じてコンテナーの幅を...

Linux システムで Tomcat のポート 80 を使用する方法

アプリケーションシナリオ多くの場合、Linux サーバーに tomcat や nginx などのソフ...

ローカルのMySQLをサーバーデータベースに移行する方法

Linux の scp コマンド (Windows では scp は使用できません) と、mysql...

Windows 10にOdoo12開発環境をインストールする方法

序文多くの友人は Mac コンピューターを持っていないと言っていますが、Windows 開発は実際に...

色の16進数カラーコード表表示と16進値の比較表示で簡単に検索できます

さまざまな色の16進コード表[パート1] 赤とピンク、およびそれらの 16 進コード。 #99003...

Windows で virtualenv を使用して仮想環境を作成する方法 (2 つの方法)

オペレーティング システム: windows10_x64 Python バージョン: 3.6.8仮想...

CSS ハック \9 と \0 は IE11\IE9\IE8 のハッキングには機能しない可能性があります

Web ページやフォームを設計するたびに、さまざまなブラウザ、特に IE ファミリの互換性の問題に悩...

Vue+js はビデオのフェードインとフェードアウト効果を実現します

Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...

ウィンドウの中央にブロック要素の位置を設定する方法

ウィンドウの中央にブロック要素の位置を設定する方法ブロック要素をウィンドウの中央に配置する上記の方法...

jsはブラウザを閉じるときにアカウントのログアウトを処理します

目次古典的なアプローチ質問その他の質問注意が必要な問題古典的なアプローチご存知のとおり、アカウントの...

検証コード干渉を実装する js (動的)

この記事の例では、検証コードの動的干渉を実装するためのjsの具体的なコードを共有しています。具体的な...

HTML フローティング フレーム (iframe 読み込み HTML) の設定と使用の例

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

MySQLは数百万のシミュレーションデータ操作コードを自動的に挿入します

私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...