問題現象:
考えられる原因の分析: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 クライアントの使用の概要
1. Python 3をダウンロードする https://www.python.org/ftp/py...
MySQL には 3 つの日付型があります。日付(年-月-日)テーブル test(hiredate ...
関数0. 現在の時刻を表示するコマンド: select now()。機能: 現在の時刻を表示します。...
B/S システム インターフェースを構築する場合、メイン ページ index.html 内に他のペー...
JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...
JDK とは何ですか?まあ、この質問がわからないのであれば、なぜこれをインストールするのか本当にわか...
目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...
インストール手順は省略します( yum -y install nginx;を使用して直接インストール...
目次el-scrollbar スクロールバーel-uploadはクリックをシミュレートしますel-s...
1. マインドマップ 2. コンテナの構築方法2.1 実験環境の準備(1)環境選択管理ツール: D...
1. はじめにプロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け...
目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...
序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...
フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...
問題の再現HTML を使用して編集する場合、特殊記号によってエラーが表示されることが多く、極端な場合...