自分のローカルネットワーク内で使用する自己署名証明書をローカルドッカーレジストリに設定します。私はドッカーマニュアル[1、2]の指示に従っていますが、それにもかかわらずエラーが発生します。自己署名証明書を使用したローカルレジストリの設定
正確には、私の問題は次のとおりです。私は、ローカルレジストリマシン上で自己署名証明書を作成します。
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt \
-subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=openmpi-dockerregistry.local"
私はローカルマシンのそれぞれに/etc/docker/certs.d/openmpi-dockerregistry:443/ca.crt
にこの証明書を置きます。
レジストリを起動し、そこに画像をプッシュします。ネットワーク内にDNSが設定されていないので、ちょうど/etc/hosts
にエントリを入れます。
次は私がローカルマシン上の画像を引っ張ってみてください、しかし、この操作は失敗します。
$ docker run -it openmpi-dockerregistry.local:443/hello-world
Unable to find image 'openmpi-dockerregistry.local:443/hello-world:latest' locally
docker: Error response from daemon: Get https://openmpi-dockerregistry.local:443/v2/: x509: certificate is not valid for any names, but wanted to match openmpi-dockerregistry.local.
See 'docker run --help'.
私はメッセージについて非常に疑わしいよ「X509:証明書は任意の名前には有効ではありません」と鳴り、私は正しくCNを指定しますが、証明書を読み込むことは反対(full output)を示しませんでした:私が試した
$ openssl x509 -text -noout -in certs/domain.crt
....
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = US, ST = Oregon, L = Portland, O = Company Name, OU = Org, CN = openmpi-dockerregistry.local
....
別のオプションは、IPによる直接レジスタにアクセスすることです。私はマニュアル[3]に従い、証明書にIP SANを追加しました。また、CN = *も設定します。結果の証明書は今(full)を以下含まれるように:
X509v3 extensions:
X509v3 Subject Alternative Name:
IP Address:<ip address>
しかし、私はイメージを引くしようとすると、今私は、エラーメッセージ、次のGET:
$ docker run -it <ip>:443/hello-world
Unable to find image '<ip>:443/hello-world:latest' locally
docker: Error response from daemon: Get https://<ip>:443/v2/: x509: cannot validate certificate for <ip> because it doesn't contain any IP SANs.
See 'docker run --help'
をファイル/etc/docker/certs.d/<ip>:443/ca.crt
は、IPアドレスが含まれていますが。
ローカルレジストリから画像を取得する方法を教えてください。
更新
にはどうすればドッキングウィンドウのレジストリを開始していますか?
$ docker run -d \
-v `pwd`/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:$REGISTRY_PORT \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-p $REGISTRY_PORT:$REGISTRY_PORT \
--restart=always \
--name registry \
registry:2
- https://docs.docker.com/registry/insecure/#use-self-signed-certificates
- https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry
- https://bowerstudios.com/node/1007
レジストリコンテナのログをチェックします( 'docker logs --follow $ INSTANCENAME')。証明書に問題がある場合はすぐに表示されます。それは、レジストリ 'config.yml'を見るのに役立ちます。 – Stefano
「TLSハンドシェイクエラー:44428:リモートエラー:tls:不正な証明書」ドメイン名とIPアドレスの両方のアクセスに使用します。 –
mcsim
あなたはあなたがレジストリを始める方法を分かち合うことができますか? – Stefano