DockerレジストリからDockerイメージをプルしようとしていましたが、次の問題が発生しました。
$ docker pull <docker registry>/<image name>/<tag>
Error response from daemon: Get <docker registry>/v1/_ping: x509: certificate signed by unknown authority
「カール」を試してみたところ、同様のエラーメッセージが表示されました。
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
そこで、次のコマンドを使用してCA証明書をダウンロードし、サーバー(RedHat Linux 7)にインポートしました。
cp root_cert.cer /etc/pki/ca-trust/source/anchors/
update-ca-trust
ルート証明書がインポートされた後、curl
が正常に機能していることが確認できます。証明書エラーは報告されませんが、docker pull
を使用しても同じ問題が発生します。 docker
はcurl
とは異なるCA証明書の場所を使用していますか?この状況でdocker pull
の問題を解決するにはどうすればよいですか?
OS証明書の変更を検出するには、Dockerサービスを再起動する必要がある場合があります。
Dockerには、個別のレジストリサーバーCAを信頼するために使用できる追加の場所があります。 CA証明書は/etc/docker/certs.d/<docker registry>/ca.crt
。イメージタグでポート番号を指定する場合は、ポート番号を含めます。
/etc/docker/certs.d/my-registry.example.com:5000/ca.crt
/etc/docker/daemon.json
次を実行して証明書を追加するより
openssl s_client -showcerts -connect <registry_address>:<registry_port> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/<registry_address>/ca.crt
再起動せずに動作します
[〜#〜]または[〜#〜]
のようなシステムに証明書をインポートする
上記のコマンドのように、証明書をファイルに保存します(ポートは重要であり、プロトコルは不要です)
openssl s_client -showcerts -connect <registry_address>:<registry_port> < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ca.crt
/ usr/local/share/ca-certificates /にコピーします
cp ca.crt /usr/local/share/ca-certificates/
update-ca-certificatesを実行する
Sudo update-ca-certificates
ここに簡単な解決策があります:
docker.squadwars.orgの例:
{
“insecure-registries” : [“docker.squadwars.org:443”]
}
Dockerデーモンを再起動します
systemctl restart docker
Hostと同じ名前のディレクトリを作成します。
docker.squadwars.orgの例:
mkdir -p /etc/docker/certs.d/docker.squadwars.org
証明書を取得し、作成したディレクトリに保存します。
ex + '/ BEGIN CERTIFICATE /、/ END CERTIFICATE/p' <(echo | openssl s_client -showcerts -connect docker.squadwars.org:443)-scq> /etc/docker/certs.d/docker.squadwars.org/ docker_registry.crt