問題現象:
考えられる原因の分析:Linux は date を使用して現在の時刻を確認し、それを証明書の有効期間と比較して具体的な理由を取得します。具体的な理由は次の 2 つのいずれかです。 1. このマシンの時刻は間違っています。 2. レジストリの証明書の有効期限が切れている。 解決:1. このマシンの時刻は間違っています。現地時間を変更するだけ 2. レジストリの証明書の有効期限が切れている。レジストリの SSL セキュリティ例外を作成し、レジストリ サーバー証明書の有効性チェックを放棄しますが、これにはセキュリティ上のリスクがあります。 安全でないレジストリが有効になっている場合、Docker は次の手順で https への接続を試みます。 まず HTTPS を使用してみてください。 HTTPS 接続にアクセスできるが証明書が利用できない場合は、証明書エラーを無視します。 HTTPS 接続が利用できない場合は、HTTP が使用されます。 CentOS /etc/docker/ ディレクトリにデーモン構成ファイル daemon.json を作成し、ターゲット レジストリの IP アドレス セグメントまたは特定のサービス ドメイン名とポート番号を json ファイルに書き込みます。 たとえば、サーバーが配置されているネットワーク セグメントが 10.0.0.0/8 の場合、コンテンツは次のようになります。 { "安全でないレジストリ" : ["10.0.0.0/8"] } 次に示すように、ドメイン名とポート番号を組み合わせて使用することもできます。 { "安全でないレジストリ" : ["myregistrydomain.com:5000"] } Windows の場合は、C:\ProgramData\docker\config\daemon.json ファイルを変更します。形式は Linux の場合と同じです。 docker サービスを再起動します。 有効かどうかを確認し、Insecure Registries フィールドに注意してください。 [root@localhost ~]# docker 情報 docker情報: コンテナ: 0 ランニング: 0 一時停止: 0 停止: 0 画像: 2 サーバーバージョン: 17.05.0-ce ストレージ ドライバー: オーバーレイ バックアップファイルシステム: xfs d_type をサポート: true ログドライバー: json-file cgroup ドライバー: cgroupfs プラグイン: ボリューム: ローカル ネットワーク: ブリッジ ホスト macvlan null オーバーレイ 群れ: 非アクティブ ランタイム: runc デフォルトのランタイム: runc 初期化バイナリ: docker-init コンテナバージョン: 9048e5e50717ea4497b757314bad98ea3763c145 runc バージョン: 9c2d8d184e5da67c95d601382adf14862e4f2228 初期化バージョン: 949e6fa セキュリティ オプション: seccomp プロフィール: デフォルト カーネルバージョン: 3.10.0-693.el7.x86_64 オペレーティング システム: CentOS Linux 7 (コア) OSタイプ: Linux アーキテクチャ: x86_64 CPU: 24 合計メモリ: 62.74 GiB 名前: localhost.localdomain ID: 755F:OEFV:VP3S:BMGQ:VUFW:WGT5:YQHO:EW6T:AAVE:NHS2:TPV3:SBTJ Docker ルートディレクトリ: /var/lib/docker デバッグモード(クライアント): false デバッグモード(サーバー): false レジストリ: https://index.docker.io/v1/ 実験的: 偽 安全でないレジストリ: 10.0.0.0/8 127.0.0.0/8 ライブリストアが有効: false サーバー証明書の有効期限を確認する方法Firefoxを例に挙げましょう 補足: Docker プライベートリポジトリ内の期限切れの自己署名証明書を置き換える Dockerレジストリ証明書の置き換えイメージをプルするときに次のエラーが報告されます: k8s@master:~/shiyu$ docker pull reg.netlab.com/tensorflow-cpu デフォルトタグの使用: 最新 デーモンからのエラー応答: Get https://reg.netlab.com/v2/: x509: 証明書の有効期限が切れているか、まだ有効ではありません /etc/docker/certs 内の証明書の有効期限が切れていないか確認するroot@master:~# openssl x509 -in /etc/docker/certs.d/reg.netlab.com/reg.netlab.com.crt -noout -dates notBefore=2019年4月1日 13:21:22 GMT notAfter=2020年3月31日 13:21:22 GMT どうやら、自己署名証明書は2020年3月31日に期限切れになったようです。 新しい証明書に再署名するキーと秘密鍵を保存するための~/certsフォルダを作成します mkdir -p ~/certs キーを生成する cd ~/certs openssl genrsa -out reg.netlab.com.key 2048 キーファイルの生成 openssl req -newkey rsa:4096 -nodes -sha256 -keyout reg.netlab.com.key -x509 -days 365 -out reg.netlab.com.crt 関連情報を入力してください 国名(2文字コード)[XX]:CN # 国名 州または省名(フルネーム)[]:guangdong # 省 地域名 (例: 市) [デフォルトの市]:guagnzhou # 市 組織名 (例: 会社) [デフォルトの会社 Ltd]:sysu # 組織単位名 (例: セクション) []:netlab # 共通名 (例: 自分の名前またはサーバーのホスト名) []:reg.netlab.com # メールアドレス []:[email protected] この時点で、証明書の自己署名は完了です。 証明書をDockerルート証明書に追加し、Dockerを再起動します。注意: 自己署名証明書であるため、デフォルトでは Docker によって信頼されないため、証明書を Docker のルート証明書に追加する必要があります。CentOS 7/Ubuntu 18 では、証明書の保存パスは /etc/docker/certs.d/ドメイン名です。 証明書をDockerルート証明書に追加する mkdir -p /etc/docker/certs.d/reg.netlab.com cp ~/certs/reg.netlab.com.crt /etc/docker/certs.d/reg.netlab.com/ Dockerを再起動する systemctl dockerを再起動します Docker レジストリ コンテナ内の期限切れの証明書を置き換える レジストリコンテナIDを表示する k8s@master:~$ docker ps |grep レジストリ 3eb5eda4b75e registry.docker-cn.com/library/registry:2 "/entrypoint.sh /etc…" 13 か月前 44 分前 0.0.0.0:443->5000/tcp レジストリ b84ea71a572f f32a97de94e1 "/entrypoint.sh /etc…" 13 か月前 約 1 時間前 0.0.0.0:5000->5000/tcp registry_mirror IDに応じてrigstryのマウントパスを表示します k8s@マスター:~$ docker 検査 3eb5eda4b75e ... 「バインド」: [ "/root/certs:/certs", 「/home/レジストリ:/var/lib/レジストリ」 ] ... 新しく生成された証明書を/root/certs:/certsディレクトリにコピーします。 ルート@マスター:~/certs#ll 総投与量 16 drwxr-xr-x 2 ルート ルート 4096 2019年4月1日 ./ drwx------ 8 ルート ルート 4096 5月 2日 14:06 ../ -rw-r--r-- 1 ルート ルート 2126 2019年4月1日 reg.netlab.com.crt -rw------ 1 ルート ルート 3272 2019年4月1日 reg.netlab.com.key レジストリコンテナを再起動する k8s@master:~$ systemctl dockerを再起動します この時点で、自己署名証明書が更新されました。 テストk8s@master:~/shiyu$ docker pull reg.netlab.com/tensorflow-cpu デフォルトタグの使用: 最新 最新: tensorflow-cpu から取得 ダイジェスト: sha256:68da50778a5f80e0676c4ca617299444fc71677a2d83cacccaf7a08d08cc1df6 ステータス: reg.netlab.com/tensorflow-cpu:latest のイメージは最新です 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: MySQL mysqladmin クライアントの使用の概要
目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...
実際、Apacheクラスタを構築するのは難しくありません。私もインターネットで情報を見つけて自分で設...
<br />原文: http://research.microsoft.com/~hel...
JS アニメーションの代わりに CSS アニメーションを使用する必要があるのはなぜですか? Java...
Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...
yum か rpm か? yum によるインストール方法は非常に便利ですが、公式サイトから MySQ...
最近、データベースについて学び始めました。最初にやったことは、データベースとは何か、データベースとデ...
①. エイリアス(CNAME)レコードの使用方法:前回の投稿のドメイン名解決では、A レコードの解...
この記事の例では、計算機機能を実装するためのミニプログラムの具体的なコードを参考までに共有しています...
一般的な提案は、WHERE 条件のインデックスを作成することですが、これは実際には一方的です。インデ...
Linux に MySQL をインストールするには、yum インストールとソース コード コンパイ...
標準の ab は単一の URI でのストレス テストのみをサポートしており、実際のニーズを満たしてい...
一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...
以下にまとめたナレッジポイントはどれもよく使われる貴重な情報ばかりですので、ぜひ上手に集めてください...
スタイル シートは、ドキュメントの表示方法、発音方法、または入力方法を記述します。スタイル シートは...