2016-04-11 25 views
1

私は例えば、ドッキングウィンドウコンテナを構築したり実行しよう:ドッカー - 証明書エラー

Sending build context to Docker daemon 6.513 MB 
Step 1 : FROM docker.example.com/research/example_project:latest 
unable to ping registry endpoint https://docker.example.com/v0/ 
v2 ping attempt failed with error: Get https://docker.example.com/v2/: x509: certificate signed by unknown authority 
v1 ping attempt failed with error: Get https://docker.example.com/v1/_ping: x509: certificate signed by unknown authority 

私はGoogleで見つけたすべての回避策を:

docker build -t docker.example.com/research/example_project .

それは次のようなエラーにつながりますubuntu用ですが、この場合は、ドッカーがWindows 8(仮想マシンがインストールされている)で動作している場合です。

+0

愚かな質問かもしれませんが、https://docker.example.com/v2/ registry existisですか、あなたはレジストリに認証することができますか? – lvthillo

+1

私は解決策を得ました。安全でないレジストリリストにレジストリを追加しなければならなかった。 – xavi

+0

@ xavi、あなたが意味することを教えてください。 「安全でないレジストリリストにレジストリを追加しなければならなかったか」そうすれば、同じ問題で他の人を助けるかもしれません。 – VME

答えて

0

1.12以前のDockerバージョン(Boot2DockerでVirtualBoxを使用するバージョン)を使用している場合、レジストリ証明書をBoot2Docker仮想マシンに追加する必要があります。あなたドッカーコンソールウィンドウから、次のように入力します

$ docker-machine ssh default 
$ DOMAIN_NAME=<type your domain name here>:5000 
$ sudo mkdir -p /etc/docker/certs.d/$DOMAIN_NAME 
$ sudo vi /etc/docker/certs.d/$DOMAIN_NAME/ca.crt 

--> then copy certificate text in there and save (type :wq) 

次のステップは、許可された証明書のリストに証明書を追加するスクリプトを作成している:

$ sudo touch /var/lib/boot2docker/bootlocal.sh && sudo chmod +x /var/lib/boot2docker/bootlocal.sh 
$ sudo vi /var/lib/boot2docker/bootlocal.sh 

そして、「ドメイン名」変数に記入以下と、先ほど作成したファイルにこのスクリプトを貼り付けます。

#!/bin/bash 
CA_CERTS_DIR=/usr/local/share/ca-certificates 
DOCKER_CERTS_DOMAIN_DIR=/etc/docker/certs.d/<your domain name> 
CERTS_DIR=/etc/ssl/certs 
CAFILE=${CERTS_DIR}/ca-certificates.crt 

cp ${DOCKER_CERTS_DOMAIN_DIR}/ca.crt ${CA_CERTS_DIR} 


for cert in $(/bin/ls -1 ${DOCKER_CERTS_DOMAIN_DIR}); do 
SRC_CERT_FILE=${CA_CERTS_DIR}/${cert} 
CERT_FILE=${CERTS_DIR}/${cert} 
HASH_FILE=${CERTS_DIR}/$(/usr/local/bin/openssl x509 -noout -hash -in ${SRC_CERT_FILE} 2>/dev/null) 

[ ! -L ${CERT_FILE} ] && /bin/ln -fs ${SRC_CERT_FILE} ${CERT_FILE} 

for idx in $(/usr/bin/seq 0 9); do 
if [ -L ${HASH_FILE}.${idx} ]; then 
[ "$(/usr/bin/readlink ${HASH_FILE}.${idx})" = "${SRC_CERT_FILE}" ] && break 
else 
/bin/ln -fs ${SRC_CERT_FILE} ${HASH_FILE}.${idx} 
break 
fi 
done 
/bin/cat ${SRC_CERT_FILE} >> ${CAFILE} 
done 
0

あなたはWindows用> = 1.12ドッカーを(ネイティブ実行し、代わりのVirtualBoxのHyper-Vのを使用しています1)を実行している場合、あなたが追加することができますDockerデーモンの "安全でないレジストリ"としてのレジストリのホストアドレスconfig:

システムトレイのDockerアイコンを右クリック - > [設定...] - > [Docker Daemon]タブをクリック - >変更

"insecure-registries": [ 
"your.domain.com:5000" 
    ], 

へのラインは

"insecure-registries": [ 
    ], 

これは私は、Windows用の新しいドッカーを使用して再び私のプライベートレジストリへのアクセスを許可します。おそらくMacでも動作しますが、テストはしていません。