2016-04-11 56 views
1

Ben, inşa etmek veya bir liman işçisi kabı çalıştırmayı denediğinizde örn:Docker - sertifika hatası

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

Aşağıdaki hataya yol açmaktadır

:

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 

ben google bulunan tüm geçici çözüm Ubuntu için, ancak bu durumda docker Windows 8 (sanal makine yüklü) üzerinde çalışırken.

+0

Belki de aptalca bir soru ama https://docker.example.com/v2/ kayıt defteri var ve kayıt defterine kimlik doğrulaması yapabiliyor musunuz? – lvthillo

+1

Çözümü aldım. Güvenli olmayan kayıt listesinde kayıt defteri eklemek zorunda kaldı. – xavi

+0

@ xavi, tarafından "Ne demek istediğini açıklar mısınız?" Bu şekilde aynı sorun yaşayan başkalarına yardım edebilirsin. – VME

cevap

0

Windows için pre-1.12 Docker sürümünü (Boot2Docker ile VirtualBox kullanan bir) kullanıyorsanız, kayıt defteri sertifikanızı Boot2Docker sanal makinesine eklemeniz gerekir. senin Docker konsol penceresi, tip Gönderen:

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

Ardından "Alan adınızın" doldurmak değişken:

$ 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) 

sonraki adım izin belgelerinin listesine sertifika ekleyen bir senaryo yaratıyor aşağıda ve dosyadaki bu komut dosyasını yapıştırın Yeni oluşturduğunuz:

#!/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

Eğer Docker> = 1.12 Windows (yerli çalışır ve yerine VirtualBox Hyper-V kullanan bir) için, ekleyebilir çalıştırıyorsanız Kayıt defterinizin Docker daemon yapılandırmasına "güvenli olmayan bir kayıt defteri" olarak ana makine adresi:

Sistem tepsinizdeki Docker simgesine sağ tıklayın -> Ayarlar ... -> 'Docker Daemon' sekmesine tıklayın -> değiştir

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

içine hat

"insecure-registries": [ 
    ], 

Bu bana Windows için yeni Docker kullanarak tekrar benim özel kayıt erişmesine olanak tanıdı. Muhtemelen Mac için de çalışıyor ama test etmedik.